2011-06-28 11 views
5

काम नहीं कर रहा है मैं djutils@async सजावट को अतुल्यकालिक रूप से कॉल करने के लिए उपयोग करता हूं। यह अच्छी तरह से काम करता है जब मैं मानक ./manage.py runserver कमांड के साथ अपना सर्वर शुरू करता हूं। लेकिन जब मैं बंदूक के नीचे अपना डीजेंगो ऐप चलाता हूं और मैं @async सजावट के साथ फ़ंक्शन को कॉल करता हूं तो कुछ भी नहीं होता है ...Django-utils @async decorator और gunicorn

मैंने djutils async decorator के कोड को देखा और यह एक पायथन-मानक को जोड़ता है और ऑब्जेक्ट करता है कतार, और कतार का उपभोग करने के लिए एक या एक से अधिक धागे पैदा करते हैं।

किसी को भी एक विचार या संकेत जहां मुझे आगे देखना चाहिए, मेरे @async फ़ंक्शन बंदूक में चलने के लिए? क्या पाइथन थ्रेड कार्यान्वयन के मानक कार्यान्वयन को बंद कर दिया गया है?

उत्तर

1

पाइथन धागे वैश्विक दुभाषिया लॉक से हस्तक्षेप के अधीन हैं और गनिकॉर्न सबसे अधिक संभावित थ्रेडिंग व्यवहार बंदर-पैचिंग है। तो आप अपने वर्कर प्रकार को बदलने की कोशिश कर सकते हैं। यदि आपका गनिकॉर्न Gevent के साथ async श्रमिकों का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो यह बंदर पैच थ्रेड हो सकता है क्योंकि गीवेंट ऐसा कर सकता है, थ्रेड क्लास को "हरे" थ्रेड के साथ सहकारी के साथ बदल सकता है।

व्यक्तिगत रूप से मुझे "इसे अलग-अलग" जवाब से नफरत है, इसलिए एक देने के लिए खेद है। अपने वेब सर्वर की प्रक्रिया के अंदर से धागे या कांटा की प्रक्रिया न करें। बस एक ऑफलाइन लोड करें जो पृष्ठभूमि कतार में काम करता है।

यदि आपकी सरल आवश्यकताएं हैं तो अपनी खुद की पृष्ठभूमि कतार बनाना आसान है। अपने डेटाबेस में एक टेबल है जो लंबित और पूर्ण नौकरियों को लॉग करता है, जिसमें क्रॉन स्क्रिप्ट के साथ संयोजन होता है जो हर 5 मिनट या उससे अधिक निष्पादित करता है और वहां से काम करता है।

और यदि आप कुछ स्थिर चाहते हैं और यह स्केल कर सकता है, Celery बहुत अच्छा है।

0

कतार में वस्तुओं को संसाधित करने वाले धागे को शुरू करने के लिए कोड (djutils/decorators.py) में शुरू किया जाता है जब बंदूकधारी पहली बार शुरू होती है यानी यह मास्टर गनिकोर्न प्रक्रिया के लिए बुलाया जाता है। हालांकि, बंदूकधारी कई कार्यकर्ताओं की प्रक्रिया को तोड़ देगा। ऐसा करने पर, धागे को शुरू करने के लिए कोड फिर से लागू नहीं किया जाता है। इस प्रकार, ये पृष्ठभूमि धागे केवल मास्टर गनिकोर्न प्रक्रिया में मौजूद हैं और किसी भी बंदूक कार्यकर्ता प्रक्रिया में नहीं।

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