【问题标题】:Flask + uWSGI + Celery - How to start Celery as DaemonFlask + uWSGI + Celery - 如何将 Celery 作为守护进程启动
【发布时间】:2017-05-03 09:09:44
【问题描述】:

我需要帮助在 uWSGI.ini 文件中将 Celery 守护程序作为 smart-attach-daemon 启动。

当我从命令行使用以下命令启动 Celery 服务器时: /home/xxxxx/xxxxx/venv/bin/celery worker -A celery_worker.celery --loglevel=info --purge 一切都很好。

但我不知道如何将此服务器作为守护进程启动。

在文档中 (http://uwsgi-docs.readthedocs.io/en/latest/AttachingDaemons.html) 是信息:

管理芹菜:

[uwsgi]
master = true
socket = :3031
smart-attach-daemon = /tmp/celery.pid celery -A tasks worker --pidfile=/tmp/celery.pid

当我使用时:

smart-attach-daemon = %(base)aaa/celery.pid %(base)venv/bin/celery worker --pidfile=%(base)aaa/celery.pid --config=%(base)celeryconfig.py --workdir=%(base)app

在我看到的日志中:

[uwsgi-daemons] found valid/active pidfile for "/home/xxxx/xxxxx/venv/bin/celery worker --pidfile=/home/xxxx/xxxxx/aaa/celery.pid --config=/home/xxxx/xxxxx/celeryconfig.py" (pid: 6901)

Celery 可能工作正常。

但是当我尝试为我的工人添加“-A”参数时:

smart-attach-daemon = %(base)aaa/celery.pid %(base)venv/bin/celery -A celery_worker.celery --pidfile=%(base)aaa/celery.pid --config=%(base)celeryconfig.py --workdir=%(base)app

在日志中我看到错误消息:

ImportError: No module named 'celery_worker'

请问,如何使用特定的工作文件启动我的 Celery 服务器?

或者,我如何运行命令:

`/home/xxxxx/xxxxx/venv/bin/celery worker -A celery_worker.celery --loglevel=info --purge

作为智能附加守护进程?

感谢您的任何回答。

【问题讨论】:

    标签: python flask celery uwsgi


    【解决方案1】:

    你能发布你的整个 uwsgi 配置文件吗?

    我认为这与 uwsgi 无法正确识别您的 virtualenv 目录/PYTHONPATH 有关。

    尝试将这些添加到您的 uwsgi 文件中:

    [uwsgi]
    chdir = /home/xxxxx/xxxxx
    home = /home/xxxxx/xxxxx/venv/
    ...
    

    【讨论】:

      【解决方案2】:

      一般来说,假设您的 app.py 位于以下 base 目录下,这应该可以工作。

      [uwsgi]
      base = /home/project
      chdir = %(base)
      module = app
      pythonpath = %(base)
      virtualenv = %(base)/venv
      wsgi-file = %(base)/app.py
      master = true
      smart-attach-daemon = %(base)/tmp/celery.pid %(virtualenv)/bin/celery -A %(module).celery  worker --pidfile=%(base)/tmp/celery.pid
      socket = %(base)/socket.sock
      chmod-socket = 777
      processes = 4
      threads = 4
      logto = %(base)/log/%n.log
      stats = 127.0.0.1:9191
      

      【讨论】:

        猜你喜欢
        • 2014-08-30
        • 2016-10-07
        • 2016-03-31
        • 2014-04-26
        • 1970-01-01
        • 2012-12-25
        • 2014-11-24
        • 2018-03-06
        • 2017-06-11
        相关资源
        最近更新 更多