2016-07-13 55 views
5

Ho un'app che ho lanciato su Heroku, ma il processo di battimento di Celery non si avvia all'avvio del server.Il beat di sedano non inizia su Heroku

Procfile

web: gunicorn -w 4 connect.wsgi 
celery: python manage.py celeryd -c 3 --beat 

Il lavoratore può essere visto per essere avviato dopo l'applicazione Heroku è lanciato:

$ heroku ps 

=== web (Free): gunicorn -w 4 connect.wsgi (1) 
web.1: starting 2016/07/13 16:17:18 -0400 (~ 9s ago) 

=== celery (Free): python manage.py celeryd -c 3 --beat (1) 
celery.1: up 2016/07/13 16:17:25 -0400 (~ 2s ago) 

Tuttavia, al fine di ottenere il sedano processo di battito in esecuzione, ho per avviarlo esplicitamente in Heroku con:

heroku run python manage.py celerybeat 

Lancio di sedano va bene localmente. È una limitazione di Heroku o sto facendo qualcosa di sbagliato?

risposta

4

Heroku consente solo due istanze Dyno gratuite in una sola applicazione, se non sbaglio.

+0

Peccato ... È strano che tu possa avviare un processo nel terminale per ottenere un terzo tentativo. –

1

@Jared Goguen: Ciao amico,

È probabile necessità di scalare fino vostri lavoratori a Heroku,

distribuzione in Heroku

Se è già stato creato un Procfile sopra e attaccato l'appropriato componenti aggiuntivi per il broker dei messaggi e l'archivio dei risultati, tutto ciò che resta da fare è spingere e ridimensionare l'app:

git push heroku master 

heroku ps:scale worker=1 

Naturalmente, in qualsiasi momento è possibile scalare a qualsiasi numero di dinamiche di lavoro. Ora eseguire un'attività proprio come hai fatto a livello locale:

heroku run python 

>>> import tasks 
>>> tasks.add.delay(1, 2) 

si dovrebbe vedere il compito correre nei registri delle applicazioni:

heroku logs -t -p worker 

Fonte: Heroku Guides

+0

PS: Mi dispiace per il formato scadente, SO mi ha dato errori con il codice citato. –

+0

Provato questo prima e ha incontrato il problema "non abbastanza dynos", oh, va bene. –

+0

Come ha detto @Muhlen nell'altra risposta, è necessario aggiornare il proprio account, ovviamente è possibile avviarlo dal terminale, ma lo stesso banco prova a seguirlo (_non raccomandato_) –

1

Se la vostra correndo su un heroku di livello libero con un solo banco allora è meglio usare il clone del caposquadra honcho python come strumento per gestione delle applicazioni basate su Procfile. clone https://github.com/nickstenning/honcho, Ciò consentirà di eseguire il fork di processi di mutiple per il tuo battito/lavoratori del sedano. Sarai comunque limitato dalla RAM gratuita di Heroku da 512 MB di ram e dalle ore di funzionamento del Dyno. Quindi, niente di troppo pesante buono per dev rapido e POC di

installare honcho

pip install honcho

Assicurarsi honcho è parte della vostra requirement.txt

pip freeze> Requisiti .txt

Creare un negozio ProcfileHoncho tutti i tuoi contenuti originali Procfile

ProcfileHoncho

web: gunicorn myDjangoApp.wsgi --log-file - 
worker1: celery -A myDjangoApp beat -l info 
worker2: celery -A myDjangoApp worker -l info 

Procfile

web: honcho start -f ProcfileHoncho 

assicurarsi di caricare il vostro URL mediatore tramite config v ars e punta al tuo broker gratuito gestito. Assicurati di trovare un broker gratuito con una ricerca rapida su google

git push heroku master 
heroku logs -t 

Controlla i log per vedere se ci sono errori. A questo punto dovresti essere bravo ad andare.