Запуск сельдерея как колбу приложение с Gunicorn - PullRequest
0 голосов
/ 17 мая 2019

Я использую Celery в качестве микросервиса Flask, где у него есть tasks.py с заданиями, а manage.py содержит вызов для запуска сервера фляг.

Это часть 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 и команду сельдерея.

Кроме того, я запускаю другие сервисы API, использующие gunicorn, из его create_app,так как они мне не нужны для запуска команды сельдерея.

1 Ответ

0 голосов
/ 17 мая 2019

Рекомендовать использовать Supervisor , что позволит вам контролировать ряд процессов.

step1: pip install supervisor

step2: vi supervisor.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

step3: запустить supervisord -c supervisord.conf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...