2014-03-13 50 views
1

系统信息芹菜工人的命令行,但不是作为守护工作,在virtualenv中

的Ubuntu LTS 12.04

的Django 1.5.5

的Python 2.7.3

芹菜3.1 .9

我在一个流浪的虚拟机上运行(用木偶),并试图设置芹菜运行t他是芹菜文档here中描述的守护程序,以及django描述的芹菜设置here。我使用位于

/home/vagrant/virtualenvs/myproj 

该项目实际项目文件位于

/srv/myproj 

一个virtualenv中我已经能够开始工作人员并没有问题节拍调度设在当/ srv/myproj目录中使用命令行语句。

~/virtualenvs/myproj/bin/celery -A app beat 
~/virtualenvs/myproj/bin/celery worker -A app 

两个节拍和工人开始没有问题,计划任务传递给工人并执行。当我尝试将它们作为后台进程运行时,会出现问题。我使用/etc/init.d/boot.d中的celery github repo上的脚本,并使用位于/ etc /默认在我celeryd以下配置设置和celerybeat文件

CELERY_BIN="/home/vagrant/virtualenvs/myproj/bin/celery" 
CELERYD_CHDIR="/srv/myproj" 

试图为使用sudo运行的服务

sudo service celeryd start 
sudo service celerybeat start 

导致引发一个错误信息,我相信这是因为它是使用位于usr/lib中,而不是在virtualenv中的蟒蛇蟒蛇。抛出的错误是一个无法导入的名称(该包存在于virtualenv中,但不是全局的,因此我的假设)。

我也注意到在运行工人,因为它规定,劳动者应运行作为非特权用户守护进程,而且你应该开始工作者和跳动使用多或 --detach命令。通过这种方式,我可以启动worker(不打),但所有的.log和.pid文件都是在我的当前目录中创建的,而不是在/ etc/default/celeryd配置文件中指定的位置。

有没有人有一个解决方案让芹菜在virtualenv工作?我觉得我真的很接近,并且忽略了一些简单的配置。

回答

0

我最终能够通过使用supervisor并在[program:celery]环境选项中设置环境变量来实现这一目标。

+0

请看看[这个链接](https://stackoverflow.com/questions/41821614/celery-daemon-production-local-config-file-without-django) – Manish

相关问题