2010-07-23 68 views
12

我構建了一個Django Web應用程序和一些Django-Piston服務。使用Web界面,用戶提交一些發佈到Web服務的數據,該Web服務反過來使用Django-芹菜來啓動後臺任務。在生產中運行Django-Celery

在使用manage.py的開發環境中,一切正常。現在我正試圖將它轉移到正確的apache服務器上進行生產。 Web應用程序和Web服務在生產中工作正常,但我遇到嚴重問題,將celeryd作爲守護程序啓動。基於這些指令:http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#running-the-worker-as-a-daemon我已經創建了一個celeryconfig.py文件並將其放在/ usr/bin目錄中(這是celeryd在我的arch linux服務器上的位置)。

CELERYD_CHDIR="/srv/http/ControllerFramework/" 
DJANGO_SETTINGS_MODULE="settings" 
CELERYD="/srv/http/ControllerFramework/manage.py celeryd" 

然而,當我嘗試在命令行我碰到下面的錯誤啓動celeryd:

"Missing connection string! Do you have " 
celery.exceptions.ImproperlyConfigured: Missing connection string! Do you have CELERY_RESULT_DBURI set to a real value? 

不知道在哪裏可以從這裏走。下面是我的settings.py部分,因爲它涉及到這個問題:

BROKER_HOST = "localhost" 
BROKER_PORT = 5672 
BROKER_USER = "controllerFramework" 
BROKER_PASSWORD = "******" 
BROKER_VHOST = "localhost" 
+0

'CELERY_RESULT_DBURI'是否設置在某個地方? – 2010-07-23 19:36:17

+0

我試圖設定該值來執行以下操作: CELERY_RESULT_BACKEND = 'AMQP' 但是我得到一個錯誤,當我嘗試運行celeryd: [2010-07-23 12:46:13138:警告/ MainProcess]提高KeyError(「Missing hostname for AMQP connection。」) [2010-07-23 12:46:13,138:WARNING/MainProcess] KeyError [2010-07-23 12:46:13,138:WARNING/MainProcess]: [2010 -07-23 12:46:13,139:WARNING/MainProcess]'缺少AMQP連接的主機名'。 由於我得到這個錯誤,我無法找到django-celery的文檔中的任何地方,這個值需要設置,我認爲我再次做錯了什麼。 – Przemek 2010-07-23 19:46:14

+0

我會猜測,也許當在生產中運行的設置應該是在celeryconfig.py?而不是在settings.py中。在那種情況下,是否應該添加celeryconfig.py文件? – Przemek 2010-07-26 18:04:29

回答

8

所以,我最後不得不與Django的芹菜項目主管聊天。幾件事情。首先,芹菜必須使用'manage.py芹菜'來運行。其次,在settings.py文件中,您必須'導入djcelery' 此導入問題可能在下一個版本中得到解決,但現在您必須執行此操作。