2014-03-13 68 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

相關問題