參考:http://blog.csdn.net/wawa8899/article/details/52743861

參考:http://www.cnblogs.com/mountaingeek/p/5911291.html

參考:http://www.linuxyw.com/718.html

參考:http://www.iitshare.com/supervisord-manage-process.html

參考:http://stackoverflow.com/questions/20346851/running-celery-as-root

執行生成配置檔案:

  1. [root@host /]# echo_supervisord_conf > /etc/supervisord.conf
  2. ...
  3. pkg_resources.DistributionNotFound: meld3>=0.6.
  4. 找到supervisor-3.3.-py2..egg-info/requires.txt,把檔案裡面meld3 >= 0.6.5註釋掉,然後再執行

配置

  1. [program:dopcelerybeat]
  2. command=python manage.py celery beat
  3. numprocs=
  4. directory=/path/
  5. autostart=true
  6. startsecs=
  7. startretries=
  8. stopwaitsecs=
  9. killasgroup=true
  10. user=root
  11. redirect_stderr=true
  12. stdout_logfile=/path/logs/supervisord-celery-beat.log
  13. stderr_logfile=/path/logs/supervisord-celery-beat-error.log
  14.  
  15. [program:dopceleryworker]
  16. command=python manage.py celery worker -l info
  17. numprocs=
  18. directory=/path/
  19. autostart=true
  20. startsecs=
  21. startretries=
  22. stopwaitsecs=
  23. killasgroup=true
  24. user=root
  25. redirect_stderr=true
  26. stdout_logfile=/path/logs/supervisord-celery-worker.log
  27. stderr_logfile=/path/logs/supervisord-celery-worker-error.log
  28.  
  29. [group:dopcelery]
  30. programs=dopcelerybeat,dopceleryworker
  31. ; priority= ; the relative start priority (default )

執行celery時報錯的解決方法:

  1. 1st solution - Manually type command at terminal
  2. $ export C_FORCE_ROOT='true'
  3.  
  4. 2nd solution - Edit shell configuration
  5. $ vi ~/.bashrc
  6.  
  7. # add following line
  8. export C_FORCE_ROOT='true'
  9.  
  10. $ source ~/.bashrc
  11.  
  12. 3rd solution - Edit manage.py of Django
  13. import os
  14.  
  15. if __name__ == '__main__':
  16. os.environ.setdefault('C_FORCE_ROOT', 'true')
  17. os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{PATH TO SETTINGS FILE}')
  18.  
  19. execute_from_command_line(sys.argv)

命令supervisorctl可以使用start/stop/status管理每個程序

  1. [root@d11092353 supervisor-3.3.-py2..egg-info]# supervisorctl
  2. dopcelery:dopcelerybeat STOPPED Dec : PM
  3. dopcelery:dopceleryworker RUNNING pid , uptime ::
  4. supervisor> status dopcelery:dopcelerybeat
  5. dopcelery:dopcelerybeat STOPPED Dec : PM
  6. supervisor>

supervisorctl API:官方文件 http://www.supervisord.org/api.html

  1. import xmlrpclib
  2. server = xmlrpclib.Server('http://127.0.0.1:9900/RPC2')
  3. server.supervisor.getState()
  4. 返回 >>> {'statename': 'RUNNING', 'statecode': 1}
  5. server.supervisor.getProcessInfo('group:name')
  6. 返回 >>> 任務狀態