2013-04-19 22 views
5

Cosa diavolo sto facendo male?Celery non funziona sul mio Heroku

Recentemente ho trovato un fantastico modello di django chiamato django-skel. Ho iniziato un progetto con esso perché ha reso molto facile l'uso di heroku con django. Stava andando tutto alla grande fino a quando ho provato a far lavorare il sedano. Non importa quello che ho provato, non sono riuscito a far funzionare i miei compiti. Così ho iniziato una nuova app per bare bones solo per vedere se riuscivo a farlo funzionare senza che nessuno dei miei altri follia potesse impedire le cose.

Questo è il mio bare-bones app. Ho installato e funzionante su heroku. L'amministratore di Django sta funzionando, ho i miei database sincronizzati e migrato. Sto usando CloudAMQP Little Lemur per il mio RabbitMQ. Vedo le richieste in coda nell'interfaccia RabbitMQ, non succede nulla. Come faccio la fila dei compiti viene eseguito manualmente nella shell:

from herokutest.apps.otgcelery.tasks import add 
result = add.delay(2,2) 

mi assicuro che ho tutti i 3 lanci in esecuzione, e ancora niente.

Anche io ho lavorato localmente.

Sono sicuro che ci sono tonnellate di domande e sono disposto a darle. Basta chiedere per favore.

+0

Avete un banco di prova in esecuzione? (Non dovresti aver bisogno di un addetto al lavoro se stai elaborando una piccola quantità di attività.) – rdegges

+0

Inoltre: puoi eseguire quanto segue: 'heroku ps: restart; heroku registra --tail --source app e cerca eventuali errori all'avvio del tuo worker? – rdegges

+0

Sto eseguendo il programma di pianificazione dyno Ho dato un calcio a tutti e tre perché solo quello non funzionava. Prenderò i log per te qui in un secondo. Grazie. – Chris

risposta

2

Grazie per l'aiuto di tutti. C'erano un paio di cose che ho finito col fare male. La prima cosa è che stavo importando l'attività in modo errato. Tutto quello che dovevo fare era:

from apps.otgcelery.tasks import add 
result = add.delay(2,2) 

Il sedano è molto pignolo con il modo in cui importi i tuoi compiti. Il secondo problema è che l'addon gratuito di CloudAMQP non funziona immediatamente con django-skel. Limitano il numero di connessioni a tre, e il modo in cui ogni thread su di esso utilizza tali connessioni in modo incredibilmente veloce e le attività appena iniziate non si connettono. Quindi l'ho risolto in un paio di modi diversi. Ho provato un altro BigWigs RabbitMQ, e ha funzionato alla grande. Tuttavia, poiché erano ancora in Beta, ho deciso di provare Redis. Anche questo ha funzionato alla grande, e i miei compiti stanno sparando velocemente come posso chiamarli.

Ancora una volta grazie a tutti per il vostro aiuto.

Problemi correlati