2014-09-17 29 views
24

Così sto provando ad installare questo esempio di base dal seguente documento:AttributeError: oggetto 'Flask' non ha nessun attributo 'user_options'

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

Ma finora io continuo a ricevere l'errore sotto:

AttributeError: 'Flask' object has no attribute 'user_options'

Sto usando il sedano 3.1.15. Ho fatto qualche ricerca online ma non ho trovato la risposta corretta per questo. Se qualcuno può far luce su questo, che sarebbe davvero helpful.Thanks

Codice:

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 

Esempio:

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 

errore Traceback:

Traceback (most recent call last): 
    File "/usr/local/bin/celery", line 11, in <module> 
    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' 

AGGIORNAMENTO: risolto il problema. Stavo correndo l'incorrectly.Thanks lavoratore tutti per il vostro aiuto

+0

Si prega di mostrarci il * full * traceback dell'errore. –

+1

Hai bisogno di [modificare] la tua domanda per aggiungerla. –

+1

Quale riga di comando hai usato per eseguire Celery? Come hai configurato Celery * stesso *? Ci hai mostrato solo il lato dell'integrazione del pallone. –

risposta

63

vedo l'aggiornamento che la domanda iniziale è stato risolto, ma non vedo la soluzione esatta. Per il bene di altri che si imbattono in questo errore, ecco alcune informazioni in più.

The Flask sedano pagina Attività sfondo in base (http://flask.pocoo.org/docs/0.10/patterns/celery/) suggerisce questo per avviare il sedano:

celery -A your_application worker

The your_application string has to point to your application’s package or module that creates the celery object.

Supponendo che il codice risiede in application.py, esplicitamente indicando l'oggetto sedano (non solo il nome del modulo) evitato l'errore:

celery -A application.celery worker

+5

Ho riscontrato una serie di problemi di questo tipo. Il sedano è un po 'magico per i miei gusti. –

-4

rename app flask_app Funzionerà

+1

Questo è irrilevante. L'OP non è alle prese con qualsiasi NameError e la tua risposta è abbastanza vaga su come potrebbe risolvere il problema (che a quanto pare non lo fa comunque). – Reti43

-4

come questo:

celery -A your_application worker 

dove sorge your_application:

your_application = Flask(\__name\__) 

il nome del file python: your_application .py, funzionerà

A proposito, il sedano v4 non è supportato Windows

Problemi correlati