2010-07-23 13 views
12

Ho creato un'applicazione web Django e alcuni servizi Django-Piston. Utilizzando un'interfaccia web, un utente invia alcuni dati che vengono inviati a un servizio web e che il servizio web a sua volta utilizza Django-celery per avviare un'attività in background.Esecuzione di Django-Celery in produzione

Tutto funziona correttamente nell'ambiente di sviluppo utilizzando manage.py. Ora sto cercando di spostare questo alla produzione su un server Apache appropriato. L'applicazione web e i servizi Web funzionano bene in produzione ma sto avendo seri problemi a partire da celeryd come demone. Sulla base di queste istruzioni: http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#running-the-worker-as-a-daemon Ho creato un file celeryconfig.py e lo ho inserito nella directory/usr/bin (questo è il posto in cui si trova celeryd sul mio server arch linux).

CELERYD_CHDIR="/srv/http/ControllerFramework/" 
DJANGO_SETTINGS_MODULE="settings" 
CELERYD="/srv/http/ControllerFramework/manage.py celeryd" 

Tuttavia quando provo ad iniziare celeryd dalla riga di comando ottengo il seguente errore:

"Missing connection string! Do you have " 
celery.exceptions.ImproperlyConfigured: Missing connection string! Do you have CELERY_RESULT_DBURI set to a real value? 

Non sono sicuro dove andare da qui. Qui di seguito è la mia sezione settings.py quello che attiene a questo problema:

BROKER_HOST = "localhost" 
BROKER_PORT = 5672 
BROKER_USER = "controllerFramework" 
BROKER_PASSWORD = "******" 
BROKER_VHOST = "localhost" 
+0

È impostato "CELERY_RESULT_DBURI" in qualche luogo? –

+0

Ho provato a installare tale valore al seguente: CELERY_RESULT_BACKEND = 'AMQP' ma ottengo un errore quando si tenta di eseguire celeryd: [2010-07-23 12: 46: 13.138: AVVISO/MainProcess] alzare KeyError [2010-07-23 12: 46: 13.138: AVVISO/MainProcess]: [2010 KeyError [: 46:: 13.138 AVVISO/MainProcess 2010-07-23 12] ("Missing hostname per il collegamento AMQP.") -07-23 12: 46: 13,139: WARNING/MainProcess] 'Nome host mancante per la connessione AMQP.' Da quando ho ricevuto questo errore e non sono riuscito a trovare da nessuna parte nella documentazione di django-celery che fosse necessario impostare questo valore, supponevo che stavo facendo qualcosa di sbagliato, di nuovo. – Przemek

+0

Scoprirò che forse durante la produzione in produzione le impostazioni dovrebbero essere in celeryconfig.py? e non in settings.py. In tal caso, dovevano essere aggiunti i file celeryconfig.py? – Przemek

risposta

8

così ho finito per avere una conversazione con il responsabile del progetto sulla django-sedano. Un paio di cose Prima di tutto, il sedano deve essere eseguito utilizzando 'manage.py celeryd'. In secondo luogo, nel file settings.py devi "importare djcelery" Questo problema di importazione potrebbe essere risolto nella prossima versione, ma per ora devi farlo.