Python 使用Gunicorn将芹菜作为烧瓶应用程序运行

Python 使用Gunicorn将芹菜作为烧瓶应用程序运行,python,flask,celery,microservices,gunicorn,Python,Flask,Celery,Microservices,Gunicorn,我将芹菜作为Flask microservice运行,其中tasks.py带有tasks,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 arg

我将芹菜作为Flask microservice运行,其中tasks.py带有tasks,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.芹菜启动该服务,它运行良好,并在tasks.py中注册所有任务

但在生产中,我想处理这个微服务的多个请求,并想添加gunicorn来服务这些请求。我该怎么做

我不知道如何同时运行gunicorn命令和芹菜命令

另外,我在生产中使用gunicorn的create_应用程序运行其他api服务,因为我不需要它们来运行芹菜命令。

推荐使用,它允许您控制许多进程

步骤1:
pip安装管理器

第二步:
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


步骤3:运行
supervisord-c supervisord.conf

文件名与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