我正在使用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)