我尝试使用 Python Flask 并想使用 celery。分布式任务工作正常,但现在我想将它配置为守护进程,如芹菜文档中所述。但我得到了celery_worker_1 exited with code 0错误。
项目结构:
celery
|-- flask-app
| `-- app.py
|-- worker
| |-- celeryd
| |-- celeryd.conf
| |-- Dockerfile
| |-- start.sh
| `-- tasks.py
`-- docker-compose.yml
烧瓶应用程序/ app.py:
from flask import Flask
from flask_restful import Api, Resource
from celery import Celery
celery = Celery(
'tasks',
broker='redis://redis:6379',
backend='redis://redis:6379'
)
app = Flask(__name__)
api = Api(app)
class add_zahl(Resource):
def get(self):
zahl = 54
task = celery.send_task('mytasks.add', args=[zahl])
return {'message': f"Prozess {task.id} gestartet, input {zahl}"}, 200
api.add_resource(add_zahl, "/add")
if __name__ == '__main__':
app.run(host="0.0.0.0", debug=True)
工人:tasks.py
from celery import Celery
import requests
import time
import os
from dotenv import load_dotenv
basedir = os.path.abspath(os.path.dirname(__file__))
load_dotenv(os.path.join(basedir, '.env'))
celery = Celery(
'tasks',
broker='redis://redis:6379',
backend='redis://redis:6379'
)
@celery.task(name='mytasks.add')
def send_simple_message(zahl):
time.sleep(5)
result = zahl * zahl
return result
if __name__ == '__main__':
celery.start()
Dockerfile:
FROM python:3.6-slim
RUN mkdir /worker
COPY requirements.txt /worker/
RUN pip install --no-cache-dir -r /worker/requirements.txt
COPY . /worker/
COPY celeryd /etc/init.d/celeryd
RUN chmod +x /etc/init.d/celeryd
COPY celeryd.conf /etc/default/celeryd
RUN chown root:root /etc/default/celeryd
RUN useradd -N -M --system -s /bin/bash celery
RUN addgroup celery
RUN adduser celery celery
RUN mkdir -p /var/run/celery
RUN mkdir -p /var/log/celery
RUN chown -R celery:celery /var/run/celery
RUN chown -R celery:celery /var/log/celery
RUN chmod u+x /worker/start.sh
ENTRYPOINT /worker/start.sh
呼如林
海绵宝宝撒
相关分类