簡體   English   中英

Celery:基於自定義基類/子類的任務未顯示在app.tasks下

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM