[英]Running Celery as a Flask app with Gunicorn
我將 Celery 作為 Flask 微服務運行,其中包含帶有任務的 tasks.py,而 manage.py 包含運行 Flask 服務器的調用。
這是 manage.py 的一部分
class CeleryWorker(Command):
"""Starts the celery worker."""
name = 'celery'
capture_all_args = True
def run(self, argv):
if "down" in argv:
ret = subprocess.call(
['pkill', '-9', '-f', "my_app.celery"])
sys.exit(ret)
else:
ret = subprocess.call(
['celery', 'worker', '-A', 'my_app.celery'] + argv)
sys.exit(ret)
manager.add_command("celery", CeleryWorker())
我可以使用python manage.py runserver
或 `celery worker -A my_app.celery 啟動服務,它運行完美並在 tasks.py 中注冊所有任務。
但在生產中,我想處理對這個微服務的多個請求,並想添加 gunicorn 來滿足這些請求。 我該怎么做?
我無法弄清楚如何同時運行我的 gunicorn 命令和 celery 命令。
此外,我正在通過其 create_app 在生產中使用 gunicorn 運行其他 api 服務,因為我不需要它們來運行 celery 命令。
推薦使用Supervisor ,它允許您控制多個進程。
步驟1: pip install supervisor
第二步: vi supervisord.conf
[program:flask_wsgi]
command=gunicorn -w 3 --worker-class gevent wsgi:app
directory=$SRC_PATH
autostart=true
[program:celery]
command=celery worker -A app.celery --loglevel=info
directory=$SRC_PATH
autostart=true
第三步:運行supervisord -c supervisord.conf
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.