running celery as daemon using supervisor is not working

celery, celery-task, django, supervisord

Solution

I had the same problem,so I added

environment=C_FORCE_ROOT="yes" 

in my program config,but It didn't work so I used

environment=C_FORCE_ROOT="true"

it's working

Problem

I have a django app in which it has a celery functionality, so i can able to run the celery sucessfully like below ``` celery -A tasks worker --loglevel=info ``` but as a known fact that we need to run it as a daemon and so i have written the below `celery.conf` file inside `/etc/supervisor/conf.d/` folder ``` ; ================================== ; 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 ``` but when i tried to update the supervisor like `supervisorctl reread` and `supervisorctl update` i was getting the message from `supervisorctl status` ``` celery FATAL Exited too quickly (process log may have details) ``` So i went to `worker.log` file and seen the error message as below ``` 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 ``` So why it was complaining about `C_FORCE_ROOT` even though we had set it as environment variable inside supervisor conf file ? what am i doing wrong in the above conf file ?

Original source