2011-10-04 13 views
5

मैं आरईएसटीपीआई के माध्यम से अनुरोध प्राप्त करने के लिए चेरीपी का उपयोग कर रहा हूं। अनुरोधों को संभालने के अलावा आवेदन को हर कुछ सेकंड में कुछ संसाधन प्रबंधन भी करना चाहिए। ऐसा करने का सबसे आसान तरीका क्या है?पायथन वेब सर्वर और आवधिक कार्य

1) एक अलग थ्रेड

2) cherrypy.process.plugins.PerpetualTimer (यकीन है कि यह कैसे उपयोग करने के लिए नहीं

3 कुछ अन्य चलाते हैं, और ऐसा लगता है कि यह संसाधनों पर भारी है?)) मार्ग?

एक अलग थ्रेड के साथ समाधान मेरे द्वारा ठीक है, लेकिन मैं सोच रहा था कि ऐसा करने के लिए एक अच्छा तरीका है या नहीं?

ध्यान दें कि चेरीपी एक आवश्यकता नहीं है - मैंने मुख्य रूप से इसका उपयोग करने का फैसला किया है क्योंकि परियोजना ज़िंदा दिखती है और क्योंकि यह एकाधिक एक साथ कनेक्शन का समर्थन करती है (दूसरे शब्दों में: मैं विकल्पों के लिए खुला हूं)।

उत्तर

3

PerpetualTimer थ्रेडिंग का एक दोहराना संस्करण है ._Timer।

आप वास्तव में उपयोग करना चाहते हैं cherrypy.process.plugins.Monitor, जो आपके लिए अलग थ्रेड चलाने के तरीके से थोड़ा अधिक है। आपको इसका उपयोग करना चाहिए क्योंकि यह cherrypy.engine में प्लग करता है, जो चेरीपी सर्वर के लिए व्यवहार शुरू और रोकता है। यदि आप अपना खुद का धागा चलाते हैं, तो आप इसे रोकना चाहते हैं जब सीपी किसी भी तरह बंद हो जाता है; मॉनिटर क्लास पहले से ही जानता है कि यह कैसे करें। यह हाल के संस्करणों तक, हूड के तहत PerpetualTimer का उपयोग करता है, जहां इसे पृष्ठभूमि टास्क क्लास द्वारा प्रतिस्थापित किया गया था।

my_task_runner = Monitor(cherrypy.engine, my_task, frequency=3) 
my_task_runner.subscribe() 
+0

बिल्कुल सही, धन्यवाद! मैंने कक्षा पैकेज को ठीक करने के लिए आपका जवाब संपादित किया ([cherrypy.process.plugins.Monitor] (http://docs.cherrypy.org/dev/refman/process/plugins/index.html#cherrypy.process.plugins.Monitor))। एक और नोट पर: अंतिम पैरामीटर गलत नाम दिया गया है, यह "अंतराल" होना चाहिए। फिर से धन्यवाद, बस मेरे मन में क्या था! – johndodo

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