के लिए अलग डेटाबेस कनेक्शन बनाना I सृजन के बाद कार्य निष्पादित करते समय मजदूर mysql समस्याओं में चलते रहते हैं।प्रत्येक अजवाइन कार्यकर्ता
हम Django 1.3 का उपयोग करें, अजवाइन 3.1.17, djorm-ext-पूल 0.5
हम संगामिति 3. मेरे obeservation अब तक जब कार्यकर्ता प्रक्रिया शुरू, वे सब मिलता है, एक ही mysql के साथ अजवाइन की प्रक्रिया शुरू connecition। हम नीचे डीबी कनेक्शन आईडी लॉग इन करें।
from django.db import connection
connection.cursor()
logger.info("Task %s processing with db connection %s", str(task_id), str(connection.connection.thread_id()))
जब सभी श्रमिकों कार्यों मिलता है, पहले एक को सफलतापूर्वक कार्यान्वित लेकिन अन्य दो अजीब त्रुटियों देता है। यह या तो "MySQL सर्वर चला गया" के साथ त्रुटियां, या ऐसी स्थिति के साथ जहां Django "DoNotExist" त्रुटि फेंकता है। स्पष्ट रूप से वस्तुओं जो Django पूछताछ कर रहे हैं मौजूद हैं।
इस त्रुटि के बाद, प्रत्येक कार्यकर्ता अपना डेटाबेस कनेक्शन प्राप्त करना शुरू कर देता है जिसके बाद हमें कोई समस्या नहीं मिलती है।
अजवाइन का डिफ़ॉल्ट व्यवहार क्या है? क्या यह एक ही डेटाबेस कनेक्शन साझा करने के लिए डिज़ाइन किया गया है। यदि ऐसा है तो इंटर प्रक्रिया संचार कैसे संभाला जाता है? मैं आदर्श रूप से प्रत्येक कार्यकर्ता के लिए अलग डेटाबेस कनेक्शन पसंद करूंगा।
मैंने नीचे दिए गए लिंक में उल्लिखित कोड का प्रयास किया जो काम नहीं करता था। Celery Worker Database Connection Pooling
हमने नीचे सुझाए गए सेलेरी कोड को भी ठीक किया है। https://github.com/celery/celery/issues/2453
जो लोग इस सवाल को कम करते हैं, कृपया मुझे डाउनवोट के कारण बताएं।
क्या आप किसी भी Django कनेक्शन पूलिंग मिडलवेयर का उपयोग कर रहे हैं? Django कॉन्फ़िगरेशन में आपका 'CONN_MAX_AGE' क्या है? मुझे लगता है कि यह प्रभाव django में लगातार कनेक्शन व्यवहार है। यह आपके द्वारा देखे जा रहे व्यवहार से संबंधित हो सकता है, न कि सेलरी के साथ कुछ। –
क्या आप सिर्फ concurrency = 1 चला सकते हैं और एकाधिक श्रमिकों को शुरू कर सकते हैं? –
@AlexLuisArias यह केवल एक कार्यकर्ता प्रक्रिया चलाएगा और उपरोक्त मुद्दे के लिए कोई मामला नहीं है। –