मैं Django के यूनिट परीक्षण ढांचे में कुछ अजवाइन कार्यक्षमता का परीक्षण करने की कोशिश कर रहा हूं, लेकिन जब भी मैं AsyncResult की जांच करने की कोशिश करता हूं तो परीक्षण कार्य शुरू नहीं होता था।इकाई सेलेरी में एक AsyncResult परीक्षण
मुझे पता है कि यह कोड खरगोश एमक्यू के साथ एक वास्तविक वातावरण में काम करता है, इसलिए मैं सोच रहा था कि यह परीक्षण ढांचे का उपयोग करते समय क्यों काम नहीं करता था।
यहाँ एक उदाहरण है:
@override_settings(CELERY_EAGER_PROPAGATES_EXCEPTIONS = True,
CELERY_ALWAYS_EAGER = True,
BROKER_BACKEND = 'memory',)
def test_celery_do_work(self):
result = myapp.tasks.celery_do_work.AsyncResult('blat')
applied_task = myapp.tasks.celery_do_work.apply_async((), task_id='blat')
applied_task.wait()
# THIS SUCCEEDS
self.assertTrue(applied_task.successful())
# THIS FAILS
self.assertTrue(result.successful())
के बाद से इसे तुरंत क्रियान्वित है ALWAYS_EAGER विकल्प AsyncResult कार्यक्षमता को अक्षम का उपयोग कर रहा है? यदि हां, तो क्या यूनिट परीक्षण AsyncResult स्थिति जांच करने में सक्षम करने का कोई तरीका है? यदि मैं ALWAYS_EAGER विकल्प को निकालने का प्रयास करता हूं तो परीक्षण कभी नहीं चलते हैं, इसलिए मुझे नुकसान हुआ है।
धन्यवाद!
मुझे लगा कि यह शायद ऐसा कुछ था, लेकिन EagerResult ऑब्जेक्ट के बारे में नहीं पता था। मैंने सोचा कि वे हमेशा AsyncResults होने जा रहे थे। जानकारी के लिए धन्यवाद! – oiez
मैं यूनिट परीक्षण से श्रमिकों को शुरू करने के लिए [यह] (https://stackoverflow.com/a/43648921/1617295) पढ़ने की अनुशंसा करता हूं। – Raffi