Supervisord作为Cygwin上的Windows服务

我正尝试使用Supervisord作为Windows服务运行Celery。 我遵循Celery网站和这里的configuration 。 我已经build立了一个通过cygwin运行supervisord的虚拟环境。 我强调了我认为最重要的几行(用**)。 看来supervisord和rabbitMQ正在工作。 问题是芹菜。

我使用以下命令设置服务:

$ cygrunsrv --install supervisord --path /usr/bin/python --args "/usr/bin/supervisord -n -c /usr/etc/supervisord.conf" $ supervisord 

更新:我现在有我的supervisord.log文件中的以下内容:

 2014-08-07 12:46:40,676 INFO exited: celery (exit status 1; not expected) 2014-08-07 12:47:07,187 INFO Increased RLIMIT_NOFILE limit to 1024 2014-08-07 12:47:07,238 INFO RPC interface 'supervisor' initialized 2014-08-07 12:47:07,251 INFO daemonizing the supervisord process 2014-08-07 12:47:07,253 INFO supervisord started with pid 7508 2014-08-07 12:47:08,272 INFO spawned: 'celery' with pid 8056 **2014-08-07 12:47:08,833 INFO success: celery entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)** 

configuration文件是:

  [inet_http_server] ; inet (TCP) server disabled by default port=127.0.0.1:8072 ; (ip_address:port specifier, *:port for all iface) username = user password = 123 [supervisord] logfile= /home/HBA/venv/logFiles/supervisord.log ; (main log file;default $CWD/supervisord.log) logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) logfile_backups=10 ; (num of main logfile rotation backups;default 10) loglevel=info ; (log level;default info; others: debug,warn,trace) pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) nodaemon=false ; (start in foreground if true;default false) minfds=1024 ; (min. avail startup file descriptors;default 1024) minprocs=200 ; (min. avail process descriptors;default 200) ;user=HBA ; (default is current user, required if root) childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP) [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=http://127.0.0.1:8072 ; use an http:// url to specify an inet socket [program:celery] command= celery worker -A runLogProject --loglevel=INFO ; the program (relative uses PATH, can take args) directory= /home/HBA/venv/runLogProject environment=PATH="/home/HBA/venv/;/home/HBA/venv/Scripts/" numprocs=1 stdout_logfile= /home/HBA/venv/logFiles/%(program_name)s/worker.log ; stdout log path, NONE for none; default AUTO stderr_logfile= /home/HBA/venv/logFiles/%(program_name)s/worker.log ; stderr log path, NONE for none; default AUTO autostart=true ; start at supervisord start (default: true) autorestart=true ; whether/when to restart (default: unexpected) startsecs=0 stopwaitsecs=1000 killasgroup=true 

我的芹菜日志文件给我:

 **[2014-08-07 19:46:40,584: ERROR/MainProcess] Process 'Worker-4' pid:12284 exited with 'signal -1' [2014-08-07 19:46:40,584: ERROR/MainProcess] Process 'Worker-3' pid:4432 exited with 'signal -1' [2014-08-07 19:46:40,584: ERROR/MainProcess] Process 'Worker-2' pid:9120 exited with 'signal -1' [2014-08-07 19:46:40,584: ERROR/MainProcess] Process 'Worker-1' pid:6280 exited with 'signal -1'** C:\Python27\lib\site-packages\celery\apps\worker.py:161: CDeprecationWarning: Starting from version 3.2 Celery will refuse to accept pickle by default. The pickle serializer is a security concern as it may give attackers the ability to execute any command. It's important to secure your broker from unauthorized access when using pickle, so we think that enabling pickle should require a deliberate action and not be the default choice. If you depend on pickle then you should set a setting to disable this warning and to be sure that everything will continue working when you upgrade to Celery 3.2:: CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml'] You must only enable the serializers that you will actually use. warnings.warn(CDeprecationWarning(W_PICKLE_DEPRECATED)) [2014-08-07 19:47:08,822: WARNING/MainProcess] C:\Python27\lib\site-packages\celery\apps\worker.py:161: CDeprecationWarning: Starting from version 3.2 Celery will refuse to accept pickle by default. The pickle serializer is a security concern as it may give attackers the ability to execute any command. It's important to secure your broker from unauthorized access when using pickle, so we think that enabling pickle should require a deliberate action and not be the default choice. If you depend on pickle then you should set a setting to disable this warning and to be sure that everything will continue working when you upgrade to Celery 3.2:: CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml'] You must only enable the serializers that you will actually use. warnings.warn(CDeprecationWarning(W_PICKLE_DEPRECATED)) **[2014-08-07 19:47:08,944: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672// [2014-08-07 19:47:08,954: INFO/MainProcess] mingle: searching for neighbors [2014-08-07 19:47:09,963: INFO/MainProcess] mingle: all alone** C:\Python27\lib\site-packages\celery\fixups\django.py:236: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments! warnings.warn('Using settings.DEBUG leads to a memory leak, never ' [2014-08-07 19:47:09,982: WARNING/MainProcess] C:\Python27\lib\site-packages\celery\fixups\django.py:236: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments! warnings.warn('Using settings.DEBUG leads to a memory leak, never ' [2014-08-07 19:47:09,982: WARNING/MainProcess] celery@CORONADO ready. 

我使用以下命令解决了我的问题:/ home / HBA / venv / Scripts / celery worker -A runLogProject –loglevel = INFO

我最大的问题是对虚拟环境的不熟悉。 我需要确保文件在Venv中的正确文件夹中。