簡體   English   中英

使用 Gunicorn 將 Celery 作為 Flask 應用程序運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM