【问题标题】:Celery with Flask and UWSGI带有烧瓶和 UWSGI 的芹菜
【发布时间】:2020-01-22 09:34:52
【问题描述】:

我有一个简单的应用程序烧瓶和一个简单的 celery 任务:

from flask import Flask
from celery import Celery


app = Flask(__name__)
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379'

celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)

@celery.task
def add(x, y):
    return x + y


@app.route('/', methods=['GET'])
def test_func():
   res = add.delay(4,5)
   while not res.ready():
      pass
   data = res.get()
   return str(data)

if __name__ == '__main__':

   app.run(host='0.0.0.0',debug=True)

当我尝试将您的示例与 uwsgi 一起使用时,但遇到的错误几乎与您相同。 首先,我简单地用 python 运行它:

python app.py

以及使用以下命令的代理:

celery -A app.celery worker -l info

一切正常。现在我尝试使用 uwsgi 启动烧瓶应用程序。

[uwsgi]
mount = /=/home/admin/flask-celery/app.py
callable = app
virtualenv = /home/admin/flask-celery/.venv
socket = :3031
master = true 
processes = 2
threads = 4
http = :9000

但是当我继续我的路线时,我遇到了以下错误:

celery.exceptions.NotRegistered: 'uwsgi_file__home_admin_flask-celery_app.add'

【问题讨论】:

    标签: python-3.x flask celery uwsgi


    【解决方案1】:

    尝试明确指定任务名称,例如:

    @celery.task(name='app.celery.add')
    def add(x, y):
        return x + y
    

    为确保更改生效,请在更改后重新启动 celery worker 并使用 find . -name '*.pyc' -delete 清理所有 *.pyc 文件

    【讨论】:

      【解决方案2】:

      请看一下这个:https://uwsgi-docs.readthedocs.io/en/latest/AttachingDaemons.html

      虽然以下配置与你的环境不完全匹配,但希望对你有所帮助。

      [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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-28
        • 2023-03-19
        • 1970-01-01
        • 2016-03-20
        • 2016-10-23
        • 2015-12-16
        相关资源
        最近更新 更多