2011-12-22 45 views
5

मैं this ट्यूटोरियल के साथ पीछा कर रहा हूं ताकि सेलेरी और डीजेगो उसके पोकू पर चल सकें।हेरोकू Django Celery: NameError: नाम 'DATABASES' को परिभाषित नहीं किया गया है

हालांकि, मैं अपने लॉग में इस त्रुटि मिलती है जब मैं कार्यकर्ता के लिए निर्दिष्ट कोड में डाल दिया:

2011-12-22T05:31:56+00:00 heroku[web.1]: Starting process with command `python canada/manage.py run_gunicorn -b "0.0.0.0:47336" -w 3` 
2011-12-22T05:31:56+00:00 app[web.1]: Unexpected error: (<type 'exceptions.NameError'>, NameError("name 'DATABASES' is not defined",), <traceback object at 0x11a9560>) 
2011-12-22T05:31:56+00:00 app[web.1]: Traceback (most recent call last): 
2011-12-22T05:31:56+00:00 app[web.1]: File "canada/manage.py", line 11, in <module> 
2011-12-22T05:31:56+00:00 app[web.1]:  import settings 
2011-12-22T05:31:56+00:00 app[web.1]: File "/app/canada/settings.py", line 51, in <module> 
2011-12-22T05:31:56+00:00 app[web.1]:  CELERY_RESULT_DBURI = DATABASES['default'] 
2011-12-22T05:31:56+00:00 app[web.1]: NameError: name 'DATABASES' is not defined 
2011-12-22T05:31:57+00:00 heroku[slugc]: Slug compilation finished 
2011-12-22T05:31:57+00:00 heroku[web.1]: State changed from starting to crashed 
2011-12-22T05:31:58+00:00 heroku[web.1]: Process exited 

मेरे settings.py

import djcelery 

djcelery.setup_loader() 

BROKER_BACKEND = "djkombu.transport.DatabaseTransport" 
CELERY_RESULT_DBURI = DATABASES['default'] 
... 

जब मैं इस जोड़ने से पहले synced तरह लग रहा है लाइन, CELERY_RESULT_DBURI = DATABASES['default'], यह ठीक चला गया।

export DATABASE_URL='postgres://postuser:[email protected]/dbname' 

संशोधित settings.py

उत्तर

8

Heroku बिना, वातावरण चर Heroku लिए सबसे आसान तरीका का उपयोग किया जाता है स्वचालित रूप से डेटाबेस साख स्थापित करने के लिए: the document

When you deploy a Django application, the compile process appends the following code to your settings.py to use the DATABASE_URL environment variable:

+0

थैंक्स बीमार आपको बताता है कि यह कैसे जाता है, ठीक है –

+0

ठीक वही है जो मैं चाहता था। धन्यवाद! –

0

के अनुसार यह पहले ही आ जाते अपने अनुप्रयोग की कोशिश DATABASES कॉन्फ़िगरेशन को settings.py के अंत में जोड़ रहा है, इसलिए जब आप अपनी सेटिंग्स.py में DATABASES का संदर्भ देते हैं, तो यह अस्तित्व में नहीं है।

आप अपनी खुद की फ़ाइल में Heroku DATABASES सेटिंग्स को दोहराने कर सकते हैं (यह सिर्फ DATABASE_URL env से से पढ़ने के लिए, देखें: django-heroku-template) या अपने खुद के buildpack का उपयोग करें।

+1

क्या आपका मतलब है 'हेरोकू रन निर्यात करें DATABASE_URL =' postgres: // postuser: postpassword @ posthost/dbname'' और फिर मेरे ऐप को पुनरारंभ करें? और मुझे अपनी सभी डेटाबेस जानकारी डालना होगा? अगर Heroku को मेरी सेटिंग्स में जोड़ना है, तो यह क्यों काम नहीं कर रहा है, क्योंकि मैंने ट्यूटोरियल के साथ पालन किया था? –