我正在使用Fabric部署一个Celery代理(运行RabbitMQ)和多个Celery工作者,celeryd
并通过守护进程supervisor
.我不能为我的生活弄清楚如何重新加载tasks.py
模块,而不是重新启动服务器.
/etc/supervisor/conf.d/celeryd.conf
[program:celeryd]
directory=/fab-mrv/celeryd
environment=[RABBITMQ crendentials here]
command=xvfb-run celeryd --loglevel=INFO --autoreload
autostart=true
autorestart=true
Run Code Online (Sandbox Code Playgroud)
celeryconfig.py
import os
## Broker settings
BROKER_URL = "amqp://%s:%s@hostname" % (os.environ["RMQU"], os.environ["RMQP"])
# List of modules to import when celery starts.
CELERY_IMPORTS = ("tasks", )
## Using the database to store task state and results.
CELERY_RESULT_BACKEND = "amqp"
CELERYD_POOL_RESTARTS = True
Run Code Online (Sandbox Code Playgroud)
附加信息
celery --version
3.0.19(Chiastic Slide)python --version
2.7.3lsb_release -a
Ubuntu 12.04.2 LTSrabbitmqctl status
...... 2.7.1 ......以下是我尝试过的一些事情:
当我尝试弹性beanstalk部署时,我的一个container_commands
可能会失败.不幸的是,弹性beanstalk日志eb-commandprocessor.log
仅报告非零退出状态:
Error occurred during build: Command 08_collectstatic failed (Executor::NonZeroExitStatus)
由于Unicode字符,其余的stdout
/ stderr
显然无法记录.(由于Unicode引号等原因,我已成功排除其他失败命令的故障).我已附上以下日志.
举个例子,做一些ln -s Gruntfile.js Gruntfile.js
会引起错误的事情ln: failed to create symbolic link ‘Gruntfile.js’: File exists
.左右角引号是Unicode和不安的Elastic Beanstalk日志记录 - 显然.
我真的需要stdout/stderr的合理输出来解决容器命令失败中的底层问题,我不知道如何修补EB来记录这个.我怎样才能做到这一点?
.ebextensions/05_container_commands.config
option_settings:
- namespace: aws:elasticbeanstalk:container:python:staticfiles
option_name: /static/
value: static/
- namespace: aws:elasticbeanstalk:container:python
option_name: WSGIPath
value: wsgi.py
- option_name: DJANGO_SETTINGS_MODULE
value: settings
container_commands:
08_collectstatic:
command: "python manage.py collectstatic --noinput"
Run Code Online (Sandbox Code Playgroud)
/var/log/eb-commandprocessor.log
-------------------------------------
/var/log/eb-commandprocessor.log
-------------------------------------
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position …
Run Code Online (Sandbox Code Playgroud)