2015-03-19 33 views
1

我的谷歌fu不能在今天早上達到snuff,因爲我無法找到信息爲什麼芹菜沒有找到我的celeryconfig文件。芹菜日誌中沒有任何東西。我在celeryconfig中的設置似乎不起作用。我正在使用Django 1.7.6,Celery 3.1.17和我的項目&應用程序正在virtualenv中運行。該應用程序由Apache和wsgi託管。芹菜沒有找到/使用celeryconfg

我使用芹菜文檔鏈接到github上的芹菜腳本。下面是我的/ etc /默認/芹菜評論刪除:

CELERYD_NODES="worker1" 
CELERY_BIN="/home/celery/.virtualenvs/reporting/bin/celery" 
CELERY_APP="main" 

CELERYD_CHDIR="/home/celery/dev/reporting" 

CELERYD_LOG_FILE="/var/log/celery/%N.log" 
CELERYD_PID_FILE="/var/run/celery/%N.pid" 

CELERYD_USER="celery" 
CELERYD_GROUP="celery" 
CELERY_CREATE_DIRS=1 

CELERY_CONFIG_MODULE="celeryconfig" 

正如你所看到的,我已經CELERYD_CHDIR設置爲我的項目目錄(一個與它manage.py)。這裏下面我粘貼PWD和ls的輸出,顯示該目錄中的文件:

(reporting)[email protected]:~/dev/reporting$ pwd 
/home/celery/dev/reporting 
(reporting)[email protected]:~/dev/reporting$ ls 
celeryconfig.py csv_output manage.py reports.xml 
celeryd   main  reporting requirements.txt 

文件可被讀取。

這個問題here建議明確設置celeryconfig像這樣:--settings=celeryconfig但我不知道在哪裏明確設置(在/etc/init.d/celeryd?),仍然,我想做的事情通過使用/ etc/default/celeryd中的設置指向celeryconfig的正確方法

最後一件事。在我的celery.py文件中,我有以下設置:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'reporting.settings') 

app = Celery('main.celery', 
      broker='amqp://', 
      backend='amqp://',) 

app.config_from_object('django.conf:settings') 
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 

那麼,我該如何讓芹菜找到我的celeryconfig?可能是因爲celeryconfig不在我的python路徑上?我看不出是這樣的話,因爲我有CELERYD_CHDIR集,而且,在我的Apache的配置,我有蟒蛇路徑設置:WSGIDaemonProcess web-reports python-path=/home/celery/dev/reporting:/home/celery/.virtualenvs/reporting/lib/python2.7/site-packages

感謝所有幫助

回答

0

我想問題可能是你正在混合配置獨立與基於Django的芹菜。

通常,當您將芹菜作爲獨立的Python項目使用時,您將創建一個celeryconfig.py模塊。這在First Steps with Celery中顯示,關鍵線是:app.config_from_object('celeryconfig')

但是,在與Django集成時,通常將配置值直接放在標準Django settings.py模塊中。此變體顯示在First steps with Django中,關鍵線條更改爲:app.config_from_object('django.conf:settings')

由於您要讓芹菜從Django設置模塊加載配置,因此您可能只需將值移至該文件即可。