Commit 9351a69e authored by nimrod's avatar nimrod
Browse files

Add worker, simplify structrue.

parent 5163f14a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2,5 +2,5 @@ FROM python:3.8
WORKDIR /opt/waldorf
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY waldorf ./waldorf
COPY *.py ./
USER nobody
+13 −1
Original line number Diff line number Diff line
@@ -18,9 +18,21 @@ services:
    build:
      context: ./
    command: ["flask", "run", "--port", "8080", "--host", "0.0.0.0"]
    depends_on:
      - rabbitmq
    environment:
      FLASK_APP: waldorf/server
      FLASK_APP: server
    healthcheck:
      test: ["CMD-SHELL", "wget http://localhost:8080/ping || exit 1"]
    ports:
      - 8080:8080
  worker:
    build:
      context: ./
    command: ["celery", "worker", "--app", "tasks", "--loglevel", "info"]
    depends_on:
      - rabbitmq
    environment:
      BROKER_URL: amqp://waldorf:pass@rabbitmq/waldorf
    healthcheck:
      test: ["CMD-SHELL", "pgrep python || exit 1"]
+1 −1
Original line number Diff line number Diff line
celery[librabbitmq]>=4.4
celery[py-amqp]>=4.4
flask>=1.1
+10 −1
Original line number Diff line number Diff line
"""Dummy web server using Flask."""
from flask import Flask
from flask import Flask, request, jsonify
import tasks

app = Flask(__name__)  # pylint: disable=invalid-name

@@ -8,3 +9,11 @@ app = Flask(__name__) # pylint: disable=invalid-name
def ping():
    """Healthcheck."""
    return "pong"


@app.route("/log", methods=["POST"])
def log():
    """Async log."""
    data = request.get_json()
    tasks.log.apply_async(args=(data,))
    return jsonify(data)

tasks.py

0 → 100644
+14 −0
Original line number Diff line number Diff line
"""Celery worker."""
import logging
import os
from celery import Celery


BROKER_URL = os.getenv("BROKER_URL")
app = Celery("tasks", broker=BROKER_URL)  # pylint: disable=invalid-name


@app.task
def log(message):
    """Log message."""
    logging.info(f"Message: %s", message)
Loading