2013-03-07 7 views
13

Ero finalmente arrivato al punto in cui avevo del tempo libero e volevo aggiungere Celery al mio progetto Python/Flask su Heroku. Tuttavia, quasi tutte le citazioni di sedano dai documenti di Heroku sono sparite. C'era un articolo con un tutotaggio in "Iniziare con Django", ma non c'è più.Heroku non supporta più Celery?

"Lo farò semplicemente" lavoro? Qual è un buon addon AMQP da utilizzare come backend su Heroku?

risposta

55

Sono il proprietario di Python in Heroku.

Sedano è ancora completamente supportato. La documentazione nella parte inferiore della guida di Django è stata rimossa perché non era aggiornata con l'ultima versione di Celery (v3.0) ed era piuttosto incompleta, secondo me.

Attualmente sto lavorando a un nuovo Dev Center article che approfondisca come ottenere il massimo da Celery. Dovrebbe essere pubblicato presto.

Per quanto riguarda l'addon della coda, sono un grande fan di CloudAMPQ.

+7

+1 per la bocca del cavallo. – jathanism

+4

È stato pubblicato? È un mese più tardi ma non riesco a trovare nulla .. – speg

+1

In attesa di vedere questo Kenneth! – Erik

3

Sembra che abbiano cambiato i documenti. Non sei sicuro che il celery non sia più supportato, dal momento che è semplicemente un pacchetto python e potresti semplicemente installarlo.

Questa è la documentazione su how to get started with Django (senza la parte in cui il sedano è stato menzionato l'ultima volta che l'ho guardato). Sembrano usare RQ ora per fare ciò che il sedano ha fatto prima: Background Tasks in Python with RQ. È ancora possibile trovare qualcosa per quanto riguarda il sedano here e here, ma è tutto quello che ho trovato.

Generalmente dubito che il sedano venga semplicemente rimosso. Avrebbe effetto su tutte le altre app che hanno già impostato qualcosa con Celery. Penso che tu possa ancora farlo funzionare e potresti trovare alcuni articoli lontano dai documenti di Heroku.

+0

Ho trovato gli stessi riferimenti. I riferimenti a Celery negli altri documenti Heroku rimanenti non sono veramente utili e in realtà esistono a malapena. Ovviamente Celery è solo un pacchetto e potrei farlo da solo, ma hanno rimosso il documento, modificato un altro documento Python in menion solo da rq e rimosso un plug-in (credo ci fosse un plug-in). Mi fa pensare come hanno scoperto un problema che non ha funzionato, non rimosso volontariamente. Ho cercato, ma non ho potuto trovare tutorial esterni. Cercherò ancora un po '. –

+0

L'esempio che avevano per il sedano era terribile, ma usava il broker di database per uno, quindi non sarei sorpreso se qualcuno avesse problemi (usare il db non è raccomandato) – asksol

+0

perché non è raccomandato usare il db da Sedano? –

1

Penso che ci siano problemi con Celery come attività in background su Heroku. Abbiamo provato a creare tali compiti e prendono tutta la memoria dopo l'esecuzione per circa 20 minuti, anche con DEBUG = False su Redis o RabbitMQ. Peggio ancora, la memoria non viene mai rilasciata: ogni volta che dobbiamo riavviare il lavoratore. Lo stesso codice funziona perfettamente su Linux nudo o su Mac con Foreman. Succede con compiti molto semplici, come leggere un file di testo in un ciclo, scrivere su un modello Django.

2

Anche se mi ci è voluto molto più tempo di quanto vorrei ammettere per capire come farlo funzionare, è davvero molto semplice. Nel tuo procfile, aggiungi un processo di sedano. Sembrerà qualcosa di simile:

web: newrelic-admin run-program gunicorn -w 4 myapp.wsgi 
celery: python manage.py celeryd -c 3 --beat 

Poi, basta assicurarsi di scalare il banco sedano ad almeno 1:

heroku ps:scale celery=1 

Questo è tutto.

+0

Ciao Josh - potresti scrivere un post più dettagliato sul blog. Ti pagherò $ 100. – jononomo

+0

Sentitevi liberi di contattarmi fuori sede per discutere. Grazie. – Josh

2

Noi supportiamo completamente il sedano su Heroku. È possibile eseguire worker sulla mia denominazione dei processi di lavoro, ridimensionarli ed eseguire qualsiasi processo. In termini di cosa usare come back-end abbiamo una varietà di fornitori di componenti aggiuntivi che possono supportare questo tramite Rabbit, Redis o altri.

È possibile trovare una guida completa all'interno di devcenter all'indirizzo https://devcenter.heroku.com/articles/celery-heroku.