Starting celery in a flask: AttributeError: object "Flask" does not have the attribute "user_options"

I am trying to start the working celery server from the command line:

celery -A server application worker --loglevel=info 

Code and path to the folder:

 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) 

route.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" 

Track back:

 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' 

I got this error when I run a celery worker in a terminal.

+8
python flask redis celery
source share
2 answers

just start celery with this command instead of yours:

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

this will solve your current problem, however your codes have many errors, for example, if you want to have your own argument inside your add_together function, you should declare the task as follows:

 @celery.task(bind=True) 
+4
source share

It seems like you have a typo error:

 def add_together(self, count): 

to

 def add_together(count): 
-one
source share

All Articles