python - 在 flask 中开始 celery : AttributeError: 'Flask' object has no attribute 'user_options'

标签 python python-2.7 flask redis celery

我尝试从命令行启动 Celery 工作服务器:

celery -A server application worker --loglevel=info  

代码及文件夹路径:

server.py  
application/controllers/routes.py

server.py

app = Flask(__name__)  
from application.controllers import routes  
app.run(host='127.0.0.1',port=5051,debug=True)

路由.py

from flask import Flask,  
from celery import Celery
from server import app 


app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0' 

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

@celery.task()  
def add_together(self, count):  
   return "First success"

@app.route("/queing")  
def testsfunction():    
    count = 1  
    add_together.delay(count)  
    return "cool"

追溯:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/bin/celery", line 11, in <module>
    sys.exit(main())
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/celery/__main__.py", line 30, in main
    main()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/celery/bin/celery.py", line 81, in main
    cmd.execute_from_commandline(argv)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/celery/bin/celery.py", line 770, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/celery/bin/base.py", line 309, in execute_from_commandline
    argv = self.setup_app_from_commandline(argv)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/celery/bin/base.py", line 477, in setup_app_from_commandline
    user_preload = tuple(self.app.user_options['preload'] or ())
AttributeError: 'Flask' object has no attribute 'user_options'

我在终端中运行 celery worker 时遇到此错误。

最佳答案

只需使用此命令而不是您的命令运行 celery :

celery -A application.controllers.routes:celery worker --loglevel=info

这将解决您当前的问题,但是您的代码有很多错误,例如,如果您想在 add_together 函数中有一个 self 参数,您应该像这样声明一个任务:

@celery.task(bind=True)

关于python - 在 flask 中开始 celery : AttributeError: 'Flask' object has no attribute 'user_options' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333727/

相关文章:

python - 从 SHA-1 恢复损坏的 128 位 key

python - 水平打印字典中的列表

python - 使用 pandas 进行多级索引和计算

python - 如何更改框架的背景 - Tkinter!?

python - 如何从 URL 获取参数到身份验证函数? (Python、 flask )

python - 循环获取 pandas 时间索引数据帧的滚动 future 值,我可以让它更快吗?

python - 如何在python中安装texttable

python - 在列表中找到重复项后如何返回自定义语句?

python - 当 SelectField 添加到模板时,Flask WTF 表单终止

python - 将基于 Flask 的 Api(使用女服务员)部署到 Docker