AttributeError: el objeto ‘Flask’ no tiene atributo ‘user_options’

Estoy tratando de configurar este ejemplo básico del siguiente documento:

http://flask.pocoo.org/docs/patterns/celery/

Pero hasta ahora sigo recibiendo el siguiente error:

AttributeError: el objeto ‘Flask’ no tiene atributo ‘user_options’

Estoy usando apio 3.1.15.

from celery import Celery def make_celery(app): celery = Celery(app.import_name, broker=app.config['CELERY_BROKER_URL']) celery.conf.update(app.config) TaskBase = celery.Task class ContextTask(TaskBase): abstract = True def __call__(self, *args, **kwargs): with app.app_context(): return TaskBase.__call__(self, *args, **kwargs) celery.Task = ContextTask return celery 

Ejemplo:

 from flask import Flask app = Flask(__name__) app.config.update( CELERY_BROKER_URL='redis://localhost:6379', CELERY_RESULT_BACKEND='redis://localhost:6379' ) celery = make_celery(app) @celery.task() def add_together(a, b): return a + b 

Error de rastreo:

 Traceback (most recent call last): File "/usr/local/bin/celery", line 11, in  sys.exit(main()) File "/usr/local/lib/python2.7/dist-packages/celery/__main__.py", line 30, in main main() File "/usr/local/lib/python2.7/dist-packages/celery/bin/celery.py", line 81, in main cmd.execute_from_commandline(argv) File "/usr/local/lib/python2.7/dist-packages/celery/bin/celery.py", line 769, in execute_from_commandline super(CeleryCommand, self).execute_from_commandline(argv))) File "/usr/local/lib/python2.7/dist-packages/celery/bin/base.py", line 305, in execute_from_commandline argv = self.setup_app_from_commandline(argv) File "/usr/local/lib/python2.7/dist-packages/celery/bin/base.py", line 473, in setup_app_from_commandline user_preload = tuple(self.app.user_options['preload'] or ()) AttributeError: 'Flask' object has no attribute 'user_options' 

La página de Tareas de fondo basadas en el apio de matraz ( http://flask.pocoo.org/docs/patterns/celery/ ) sugiere esto para comenzar el apio:

celery -A your_application worker

La cadena your_application debe apuntar al paquete o módulo de su aplicación que crea el objeto de apio.

Asumiendo que el código reside en application.py, apuntando explícitamente al objeto apio ( no solo el nombre del módulo ) evitó el error:

celery -A application.celery worker

Esto funcionó para mí:

 celery -A my_app_module_name.celery worker 

cambiar el nombre de la aplicación flask_app funcionará

Me gusta esto:

 celery -A your_application worker 

donde se encuentra su aplicación:

 your_application = Flask(\__name\__) 

el nombre del archivo python: your_application .py, funcionará

Por cierto, el apio v4 no es compatible con Windows