2012-09-26 16 views
9

मुझे यह गलतफहमी हो सकती है कि यह कैसे काम करता है (यही कारण है कि मैं पूछ रहा हूं), लेकिन मुझे लगता है कि जब एक अजवाइन कार्यकर्ता खरगोश एमक्यू से एक कार्य का उपभोग करता है तो यह उस पर एक ताला लगा देता है - तो बोलने के लिए - और फिर इसे पूरा करना स्वीकार करना चाहिए वह कार्य इसे पूरा करता है। तो कहें कि मेरे पास 4 कर्मचारी हैं जिनके पास सभी में प्रीफ़ेच सेटिंग है और 6 कार्यों की कतार है जो लंबे समय तक लेती है। एक बार जब मैं उन श्रमिकों शुरू करने और मैं चलाएँ:एक अजवाइन कार्यकर्ता कब RabbitMQ को स्वीकार करता है कि इसका कोई कार्य है?

celery 6  2  4 

यह दर्शाता है कि 4 कार्य चल रहा है (लेकिन अभी तक स्वीकार नहीं किया गया) और 2 होने के लिए तैयार हैं:

rabbitmqctl -q list_queues name messages messages_ready messages_unacknowledged 

मैं की तरह कुछ देखने के लिए उम्मीद थी ग्रहण किया हुआ।

मुझे लगता है कि मेरी समझ गलत है, क्योंकि जो मैं वास्तव में देखें:

celery 2  0  2 

तो यह जब संदेश एक कार्यकर्ता द्वारा प्राप्त होता है होता है के रूप में अगर यह स्वीकार करते है, लेकिन इससे पहले कि कि कार्यकर्ता उस कार्य को संसाधित होना समाप्त।

तो समेटने के लिए, मेरा प्रश्न है, जब सेलेरी कार्यकर्ता स्वीकार करता है कि इसका कोई कार्य है? ऐसा लगता है कि यह उस कार्य को प्राप्त करने के बाद और उस पर काम करना शुरू कर देता है, न कि जब यह उस पर काम पूरा करता है। क्या कोई पुष्टि कर सकता है?

+0

और यह पायथन है? –

+0

याहू मुझे टैगिंग लगता है क्योंकि पाइथन अत्यधिक व्यापक है, उस टैग को हटा दिया गया है। – Bialecki

उत्तर

12

यह पूछे जाने वाले प्रश्न में उल्लेख किया है, लेकिन मैं इसे नहीं मिल के लिए आप दोष नहीं दे सकते: http://docs.celeryproject.org/en/latest/faq.html#should-i-use-retry-or-acks-late

जल्दी पावती के डिफ़ॉल्ट व्यवहार को देखते है, क्योंकि हम उन लागू करने के लिए idempotent लिखने के लिए नहीं करना चाहते हैं कार्य।

+2

बहुत बढ़िया, ठीक वही जो मैं खोज रहा था। अजवाइन बीटीडब्ल्यू के लिए धन्यवाद, यह कमाल है। – Bialecki