[英]Celery: Custom Base class/child class based task not showing up under app.tasks
我正在嘗試創建一些芹菜任務作為類,但是遇到了一些困難。 這些類是:
class BaseCeleryTask(app.Task):
def is_complete(self):
""" default method for checking if celery task has completed. """
# simply return result (since by default tasks return boolean indicating completion)
try:
return self.result
except AttributeError:
logger.error('Result not defined. Make sure task has run!')
return False
class MacroReportTask(BaseCeleryTask):
def run(self, params):
""" Override the default run method with signal factory run"""
# hold on to the factory
process = MacroCountryReport(params)
self.result = process.run()
return self.result
但是當我初始化應用程序並檢查app.tasks(或運行worker)時,應用程序似乎在注冊表中沒有上述任務。 其他基於函數的任務( using app.task() decorator
)似乎已正確注冊。
我將上述任務運行為:
process = SignalFactoryTask()
process.delay(params)
Celery worker錯誤並顯示以下消息: Received unregistered task of type None
。
我認為我遇到的問題是:如何像基於常規函數的任務那樣將自定義類添加到任務注冊表?
遇到完全相同的問題,花了數小時才找到解決方案,因為我90%確信這是一個錯誤。 在課堂任務中,嘗試以下操作
class BaseCeleryTask(app.Task):
def __init__(self):
self.name = "[modulename].BaseCeleryTask"
class MacroReportTask(app.Task):
def __init__(self):
self.name = "[modulename].MacroReportTask"
似乎在應用程序中注冊它仍然存在一個錯誤,該錯誤未自動配置名稱。 讓我知道是否可行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.