2017-04-15 1 views
0

J'utilise Django 1.11 et Celery 4.0.2. Nous utilisons un PaaS (OpenShift 3) qui fonctionne sur kubernetes - Dockers.Exécuter le céleri avec Django démarrer

J'utilise une image Python, il sait seulement comment exécuter une commande au démarrage (et suivre pour le code de sortie - redémarrage en cas d'échec),

Comment puis-je utiliser celery worker dans le même temps, je suis en cours d'exécution Django pour vous assurer que l'échec d'un d'entre eux va tuer le processus à la fois (des travailleurs et Django)

  • J'utilise wsgi et gevent pour commencer Django

Merci beaucoup!

Répondre

1

Vous pouvez utiliser le cirque (supervisord est une alternative mais ils ne prennent pas en charge python 3 actuellement)

Dans le cirque vous créez un circus.ini dans votre répertoire de projet. Quelque chose comme:

[watcher:celery] 
working_dir = /var/www/your_app 
virtualenv = virtualenv 
cmd = celery 
args = worker --app=your_app --loglevel=DEBUG -E 

[watcher:django] 
working_dir = /var/www/your_app 
virtualenv = virtualenv 
cmd = python 
args = manage.py runserver 

Ensuite, vous commencez à la fois avec:

virtualenv/bin/circusd circus.ini 

Il faut commencer les deux processus. Je pense que c'est un bon moyen de créer un plan de "démarrage" pour votre projet. Peut-être que vous voulez ajouter celerybeat ou utiliser des canaux (websockets dans django), de sorte que vous pouvez simplement ajouter un nouveau observateur dans votre circus.ini. C'est assez dynamique