第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在芹菜中對(duì)AsyncResult進(jìn)行單元測(cè)試

在芹菜中對(duì)AsyncResult進(jìn)行單元測(cè)試

慕妹3242003 2021-03-29 13:11:14
我正在嘗試在Django的單元測(cè)試框架中測(cè)試一些celery功能,但是每當(dāng)我嘗試檢查AsyncResult時(shí),測(cè)試的行為就好像從未啟動(dòng)過一樣。我知道這段代碼可以在RabbitMQ的真實(shí)環(huán)境中工作,所以我只是想知道為什么在使用測(cè)試框架時(shí)它不起作用。這是一個(gè)例子:@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選項(xiàng)是否會(huì)因?yàn)榱⒓磮?zhí)行而禁用AsyncResult功能?如果是這樣,有什么方法可以對(duì)AsyncResult狀態(tài)檢查進(jìn)行單元測(cè)試?如果我嘗試取出ALWAYS_EAGER選項(xiàng),則測(cè)試將永遠(yuǎn)不會(huì)運(yùn)行,因此我一頭霧水。
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果CELERY_ALWAYS_EAGER為is True,則對(duì)的呼叫apply_async()實(shí)際上被替換為apply()。返回的結(jié)果是EagerResult,其中已經(jīng)包含任務(wù)的結(jié)果。

因此,是的,設(shè)置ALWAYS_EAGER = True將禁用整個(gè)AsyncResult功能。整個(gè)異步過程將被繞過,并且實(shí)際上沒有任何任務(wù)發(fā)送到代理,這就是為什么您無(wú)法通過檢索結(jié)果的原因AsyncResult。

CELERY_ALWAYS_EAGER = True在測(cè)試僅需要Celery結(jié)果的代碼路徑時(shí)使用,并與EagerResult或一起使用相同的方式AsyncResult。

如果需要,還有運(yùn)行與測(cè)試的方式AsyncResult也與CELERY_ALWAYS_EAGER = False,但對(duì)于這一點(diǎn),你需要調(diào)用任務(wù)在你的測(cè)試用例之前啟動(dòng)工作。然后,工作人員將能夠執(zhí)行您的任務(wù),并且AsyncResult可以正常工作。您可以看一下django-celery-testworker,它似乎就是這樣做的,盡管我尚未對(duì)其進(jìn)行測(cè)試。


查看完整回答
反對(duì) 回復(fù) 2021-04-02
  • 1 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)