Celery批量異步調(diào)用任務(wù)一直等待結(jié)果問題
Celery批量異步調(diào)用任務(wù)一直等待結(jié)果
采用celery中g(shù)roup方式進行批量異步調(diào)用,且需要等待返回結(jié)果時(未設(shè)置超時時間)
兩種情況會導(dǎo)致任務(wù)一直等待結(jié)果:
1. 如果異步方法對異常未進行處理
直接拋出,則會導(dǎo)致group的job一直等待結(jié)果,如下代碼:
@shared_task(bind=True) def test_task_method(self, number, is_ignore_exception): try: logger.info('enter method') # if number % 10 == 0: # raise Exception('throw exception') time.sleep(15) except Exception: logger.info(traceback.format_exc()) if not is_ignore_exception: raise
2. celery出現(xiàn)任務(wù)task丟失情況
實際執(zhí)行任務(wù)與期待任務(wù)數(shù)量不符合,則會一直等待結(jié)果。因為可能部分開發(fā)者對查看Broker和celery執(zhí)行的情況命令不熟悉,這里推薦安裝Flower監(jiān)控celery,文檔參考Flower文檔。
在執(zhí)行中觀察celery是否掉線,
如下圖:
如果出現(xiàn)掉線,則查看celery日志或者系統(tǒng)日志(/var/log/message)查看是存在進程被kill情況,
如下圖:
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用PyPDF2庫實現(xiàn)輕松提取PDF文本
ython中的PyPDF2庫是一個非常有用的工具,無論您是需要分析PDF文檔中的內(nèi)容還是需要在文檔中搜索特定的信息,PyPDF2都可以幫助您輕松實現(xiàn)這些任務(wù),下面我們就來學(xué)習(xí)一下如何利用PyPDF2提取PDF文本吧2023-09-09淺談Scrapy網(wǎng)絡(luò)爬蟲框架的工作原理和數(shù)據(jù)采集
在python爬蟲中:requests + selenium 可以解決目前90%的爬蟲需求,難道scrapy 是解決剩下的10%的嗎?顯然不是。scrapy框架是為了讓我們的爬蟲更強大、更高效。接下來我們一起學(xué)習(xí)一下它吧。2019-02-02Python執(zhí)行系統(tǒng)命令的五種方式小結(jié)
在日常開發(fā)中,有時需要在Python腳本中執(zhí)行系統(tǒng)命令,Python有五種方式來執(zhí)行系統(tǒng)命令(推薦使用第五種),本文為大家整理了這五種方法的具體使用,希望對大家有所幫助2024-01-01