2011-04-22 6 views
12

मुझे एक Django 1.3 एप्लिकेशन और gunicorn 0.12.1 के साथ असंगत कोड-रीलोडिंग व्यवहार मिल रहा है, वर्चुअलएन्व के अंदर चल रहा है।गनिकोर्न एक Django अनुप्रयोग को पुनः लोड नहीं कर रहा है

गनिकॉर्न विशिष्ट अनुप्रयोग बंदरगाह प्रक्रिया पीआईडी ​​के पुनरारंभ के साथ भी मेरे आवेदन को ठीक से लोड नहीं करता है। जब मैं एक मूल runserver चलाता हूं (Django के माध्यम से, manage.py कमांड के माध्यम से) यह कोई मुद्दा नहीं है।

जब मैं अपने वर्चुअलनव को हटाता और फिर से बना देता हूं, तो नए कोड के साथ बंदूक की दौड़ चलती है।

क्या कोई पाइथन कैश या कुछ है? मैंने सभी *.pyc फ़ाइलों को हटाने का भी प्रयास किया।

उत्तर

6

इस प्रयास करें:

$ kill -HUP masterpid 

इसके अलावा, following post के तल पर नोटों में से कुछ पर एक नजर है।

4

मैं इस समस्या के बदलावों में भी भाग गया - जैसा कि श्री पोकोमी द्वारा लिखे गए लेख में सलाह दी गई है, HUP सिग्नल के साथ बंदूकधारी मास्टर प्रक्रिया को मारने से यह चाल चलती है।

यदि आप पाइथन watchdog मॉड्यूल का उपयोग करते हैं, तो आप आसानी से फ़ाइल पर ऑटो-रीलोडिंग सेट कर सकते हैं; सेटअप वास्तव में सुंदर आत्म व्याख्यात्मक है, तो यहाँ है मेरे विकास supervisord.conf फ़ाइल से एक टुकड़ा है: नई-पंक्तियों कि विन्यास फाइल में वास्तव में नहीं कर रहे हैं इससे पहले कि

[program:ost2] 
autostart=true 
command=/usr/local/share/python/gunicorn --debug\ 
-c /Users/fish/Dropbox/ost2/ost2/utils/gunicorn/ost2-debug.py wsgi_debug 
directory=/Users/fish/Dropbox/ost2/ost2 
priority=500 
; (etc) 

[program:ost2-reloader] 
autostart=true 
autorestart=false 
directory=/tmp 
command=/usr/local/share/python/watchmedo shell-command\ 
--patterns="*.py;*.txt;*.html;*.css;*.less;*.js;*.coffee"\ 
-R --command='kill -HUP $(cat /usr/local/gunicorn/gunicorn.pid)'\ 
/Users/fish/Dropbox/ost2/ost2/ 
priority=996 
; (etc) 

(एनबी मुझे लगता है कि नमूने में स्लैश डाल - मैंने उन नईलाइनों को सुगमता के लिए डाला; मुझे यकीन नहीं है कि यह आईआरएल काम करता है)

पहला कार्यक्रम बंदूक प्रक्रिया है, जिसे मैं वर्कज़ुग डीबगर का उपयोग करने के लिए विकास के दौरान एक ही थ्रेड में चलाता हूं। दूसरा भाग दिलचस्प बात है: वह आदेश कहता है, "जब भी फ़ाइल का प्रत्यय इस सूची में से किसी एक से मेल खाता है तो इस निर्देशिका पेड़ में फ़ाइल में कोई बदलाव होने पर बंदूक पीआईडी ​​फ़ाइल द्वारा निर्दिष्ट प्रक्रिया को मार दें"।

मेरे सहित कई लोगों के लिए आकर्षण की तरह काम करता है। यदि आप इसे नहीं जानते हैं, तो watchdog बहुत उपयोगी है और अपने अधिकार में, एक नजर के लायक है।

+1

यह बहुत अच्छा है, और यदि आप बंदूकधारी का प्रबंधन करने के लिए पर्यवेक्षक का उपयोग कर रहे हैं, तो आप अपने बिल्ली कमांड को प्रतिस्थापित कर सकते हैं: supervisorctl status gunicorn_task_name | sed -e's /.* pid \ ([0-9] \ {1,5 \} \)। */\ 1/g ' –

संबंधित मुद्दे