2013-03-08 7 views
6

के साथ काम नहीं कर रहा है। मैं उबंटू 12.04 सिस्टम में पर्यवेक्षक से गनिकॉर्न चलाने की कोशिश कर रहा हूं। गनिकॉर्न एक फ्लास्क ऐप चलाता है (सरल रीस्ट वेब सेवा फ्लास्क के एम्बेडेड सर्वर के साथ परीक्षण किया जाता है)। मैंने गिटिकॉर्न को जीआईटी रेपो क्लोनिंग करके स्थापित किया है, 'एपीटी-इंस्टाल इंस्टॉल' से बचने की कोशिश कर रहा है क्योंकि यह इंस्टॉल करते समय गनिकॉर्न सर्वर चलाता है। मैं इसे नहीं चलाना चाहता, यह केवल सुपरवाइजर द्वारा चलाया जाएगा।सुपरवाइजर गनिकोर्न + फ्लास्क

तो बाद इसे स्थापित है, अगर मैं कोशिश:

cd /usr/local/bin 
gunicorn my_app:app -c /path/to/gu_config_file 

Gunicorn काम करता है। तब मैं इसे मार डालता हूँ। एक्सटेंशन के बिना कॉन्फ़िगरेशन फ़ाइल नोट करें, क्योंकि '.py' एक्सटेंशन के साथ मेरे लिए काम नहीं करता है। पर्यवेक्षक में

[program:gunicorn] 
command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup 
directory=/usr/local/bin/ 
autostart=true 
autorestart=true 
redirect_stderr=True 

और अद्यतन परिवर्तन: तो मैं जैसे पर्यवेक्षक का कॉन्फ़िग फ़ाइल को संपादित

supervisorctl reread 
# gunicorn: changed 
supervisorctl update 
# gunicorn: stopped 
# gunicorn: updated process group 

फ़ाइल में परिवर्तन का पता लगाता है और Gunicorn कार्यक्रम के लिए काम करता है। एक कष्टप्रद हो रही

supervisorctl start gunicorn 

: ठीक है, लेकिन फिर मैं इसे शुरू करने की कोशिश

gunicorn: ERROR (abnormal termination) 

पर्यवेक्षक का लॉग जाँच हो रही है:

2013-03-08 13:07:22,378 INFO spawned: 'gunicorn' with pid 3355 
2013-03-08 13:07:22,916 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:23,918 INFO spawned: 'gunicorn' with pid 3361 
2013-03-08 13:07:24,492 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:26,496 INFO spawned: 'gunicorn' with pid 3367 
2013-03-08 13:07:27,078 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:30,085 INFO spawned: 'gunicorn' with pid 3373 
2013-03-08 13:07:30,628 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:31,630 INFO gave up: gunicorn entered FATAL state, too many start retries too quickly 

मैं अभी क्या करना है पता नहीं है .. । क्या आप मेरी मदद कर सकते हैं? Thx बहुत कुछ!

संपादित करें: माफ करना मैं कहना है के रूप में मैं PYTHONPATH चर निर्यात भूल गया:

export PYTHONPATH=/usr/local/bin:/usr/local/lib/project 

'my_app'/usr/स्थानीय/बिन में है। अन्य मॉड्यूल के लिए lib पथ की आवश्यकता है। मैं भी पर्यवेक्षक कॉन्फ़िग फ़ाइल को संपादित किया है पर्यावरण चर इंगित करने के लिए, जैसे:

environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project/ 

लेकिन काम नहीं किया।

संपादित करें 2: के रूप में @robertklep उसकी टिप्पणी में सुझाव देते हैं, इस लॉग का उत्पादन होता है:

Traceback (most recent call last): 
    File "/tmp/gunicorn/gunicorn/arbiter.py", line 485, in spawn_worker 
    worker.init_process() 
    File "/tmp/gunicorn/gunicorn/workers/base.py", line 100, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/tmp/gunicorn/gunicorn/app/base.py", line 103, in wsgi 
    self.callable = self.load() 
    File "/tmp/gunicorn/gunicorn/app/wsgiapp.py", line 25, in load 
    return util.import_app(self.app_uri) 
    File "/tmp/gunicorn/gunicorn/util.py", line 369, in import_app 
    __import__(module) 
    File "/usr/local/bin/my_app.py", line 4, in <module> 
    import const 
ImportError: No module named const 
2013-03-08 13:29:35 [3670] [INFO] Worker exiting (pid: 3670) 
2013-03-08 13:29:36 [3665] [INFO] Shutting down: Master 
2013-03-08 13:29:36 [3665] [INFO] Reason: Worker failed to boot. 

'स्थिरांक' मॉड्यूल/usr/स्थानीय/lib/परियोजना में है ...

उत्तर

8

मैं डॉन 'टी आप अपने पर्यवेक्षक कॉन्फ़िग फ़ाइल में पर्यावरण की स्थापना देखें:

:

[program:gunicorn] 
environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project 
command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup 
... 

यदि वह काम नहीं करता है, डिबग मोड में gunicorn शुरू करने का प्रयास

command=/usr/local/bin/gunicorn --debug --log-level debug my_app:app -c /path/to/.gu_setup 

या पथ पारित सीधे gunicorn रहे हैं:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/bin,/usr/local/lib/project my_app:app -c /path/to/.gu_setup 

संपादित करें: gunicorn के --pythonpath टूट गया है, आप केवल एक निर्देशिका पारित कर सकते हैं:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/lib/project my_app:app -c /path/to/.gu_setup 
+0

हाँ, मैंने ऐसा किया और उसी समय मेरा प्रश्न संपादित कर रहे थे जब आप मुझे प्रतिक्रिया देते हैं ... क्षमा करें! मैं जो कर रहा हूं वह कर रहा हूं, इसके लिए प्रतीक्षा करें! :) –

+0

तो मुझे बता रहा है कि यह 'कॉन्स्ट' मॉड्यूल नहीं ढूंढ सकता है, लेकिन यह/usr/local/lib/project में है, पर्यवेक्षक की कॉन्फ़िगरेशन फ़ाइल में पर्यावरण में जोड़ा गया है ... –

+0

पथ को सीधे बंदूक के रास्ते में जाने के बारे में मेरा संपादन देखें। – robertklep

3

यह आवश्यक पास --pythonpath नहीं है ।यदि आप virtuanenv काम करते हैं तो आप गनिकोर्न कहां जोड़ते हैं। उदाहरण: बोतल कोड है जब

command=/home/virtualenv/bin/gunicorn application:app -c /home/virtualenv/deploy/gunicorn.conf.py 

और निर्देशिका, है उदाहरण:

directory=/home/virtualenv/myapp 

याद रखें उपयोगकर्ता जड़ है!

user=root