2009-10-24 18 views
14

मुझे ऐसी प्रक्रिया चलाने की आवश्यकता है जो Django व्यू से पूरा होने में घंटों लग सके। मुझे राज्य को जानने या इसके साथ संवाद करने की आवश्यकता नहीं है, लेकिन मुझे प्रक्रिया शुरू करने के बाद सही तरीके से पुनर्निर्देशित करने के लिए उस दृश्य की आवश्यकता है।Django व्यू से लंबी चल रही प्रक्रिया कैसे शुरू करें?

मैं subprocess.Popen का उपयोग कर की कोशिश की है, एक नया threading.Thread, multiprocessing.Process भीतर इसे प्रयोग। हालांकि, जब तक बच्चा समाप्त नहीं हो जाता है तब तक माता-पिता की प्रक्रिया लटकती रहती है। एकमात्र तरीका है कि लगभग यह एक कांटा का उपयोग कर किया जाता है। जाहिर है कि यह अच्छा नहीं है क्योंकि यह पैरेंट समाप्त होने तक ज़ोंबी प्रक्रिया को पीछे छोड़ देता है।

है यही कारण है कि मैं जब कांटा का उपयोग कर ऐसा करने के लिए कोशिश कर रहा हूँ:

if os.fork() == 0: 
    subprocess.Popen(["/usr/bin/python", script_path, "-v"]) 
else: 
    return HttpResponseRedirect(reverse('view_to_redirect')) 

तो, कम से कम हताहत साथ एक Django दृश्य से पूरी तरह से स्वतंत्र प्रक्रिया को चलाने के लिए एक रास्ता है? या मुझ से कुछ गलत हो रहा है?

+2

डुप्लिकेट: http://stackoverflow.com/search?q=%5Bpython%5D+long-running। http://stackoverflow.com/questions/1107826/python-long-running-daemon-job-processor, http://stackoverflow.com/questions/805120/python-task- सर्वर –

उत्तर

10

मुझे नहीं पता कि यह आपके मामले के लिए उपयुक्त होगा, फिर भी मैं यह करता हूं: मैं एक कार्य कतार (एक डीजेंगो मॉडल के माध्यम से) का उपयोग करता हूं; जब दृश्य कहा जाता है, तो यह कार्यों में एक नया रिकॉर्ड दर्ज करता है और खुशी से रीडायरेक्ट करता है। बदले में कार्यों को नियमित रूप से डीजेंगो से नियमित आधार पर क्रॉन द्वारा निष्पादित किया जाता है।

संपादित करें: क्रॉन कार्य निष्पादित करने के लिए प्रासंगिक (और कस्टम) django कमांड को कॉल करता है।

5

सबसे पहले - शैनू के आरंभ में, आपके कार्य के लिए क्रॉन का उपयोग करने का प्रयास करें।

यदि यह आपके अनुरूप नहीं है - तो Django के लिए कार्य कतार के लिए CeleryProject का उपयोग करने का प्रयास करें। काम करने के लिए यह RabbitMQ का उपयोग करता है। और बेसिंग वायदा

2

इस समस्या का समाधान देखने के लिए kronos.py में कोड को देखें। यहाँ पर छोटे overview का उपयोग करने के लिए थोड़ा overview है। इन सब के

http://www.razorvine.net/download/kronos.py

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