l'exécution de céleri en tant que démon en utilisant le superviseur n'est pas de travail

J'ai un django app dans laquelle il a un céleri fonctionnalité, donc je peux en mesure d'exécuter le céleri avec succès comme ci-dessous

celery -A tasks worker --loglevel=info

mais comme un fait connu que nous avons besoin de l'exécuter comme un démon et donc, j'ai écrit ci-dessous celery.conf fichier à l'intérieur de /etc/supervisor/conf.d/ dossier

; ==================================
;  celery worker supervisor example
; ==================================

[program:celery]
; Set full path to celery program if using virtualenv
command=/root/Envs/proj/bin/celery -A app.tasks worker --loglevel=info

user=root
environment=C_FORCE_ROOT="yes"
environment=HOME="/root",USER="root"
directory=/root/apps/proj/structure
numprocs=1
stdout_logfile=/var/log/celery/worker.log
stderr_logfile=/var/log/celery/worker.log
autostart=true
autorestart=true
startsecs=10

; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600

; When resorting to send SIGKILL to the program to terminate it
; send SIGKILL to its whole process group instead,
; taking care of its children as well.
killasgroup=true

; if rabbitmq is supervised, set its priority higher
; so it starts first
priority=998

mais quand j'ai essayé de mettre à jour le superviseur comme supervisorctl reread et supervisorctl update je recevais le message de supervisorctl status

celery                           FATAL      Exited too quickly (process log may have details)

Je suis donc allé à worker.log fichier et vu le message d'erreur comme ci-dessous

Running a worker with superuser privileges when the
worker accepts messages serialized with pickle is a very bad idea!

If you really want to continue then you have to set the C_FORCE_ROOT
environment variable (but please think about this before you do).

User information: uid=0 euid=0 gid=0 egid=0

Alors pourquoi il se plaint C_FORCE_ROOT même si nous avions à le définir comme une variable d'environnement à l'intérieur de superviseur fichier conf ? ce que je fais mal dans le ci-dessus fichier conf ?

Ne pas exécuter en tant que root — il ne devrait pas être nécessaire. (Êtes-vous à l'aide de ce avec Django — exécuter en tant que le même utilisateur que là.)
ouais, ok, quand j'ai enlevé la ligne environment=HOME="/root",USER="root" ça marchait très bien
J'ai eu ce problème avec AWS Elasticbeanstalk, à l'aide de l'utilisateur=ec2-utilisateur fixe pour moi

OriginalL'auteur Shiva Krishna Bavandla | 2014-07-09