Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在中注册基于类的任务_Python_Celery_Celery Task - Fatal编程技术网

Python 在中注册基于类的任务

Python 在中注册基于类的任务,python,celery,celery-task,Python,Celery,Celery Task,我用的是芹菜4.0.2版 与以前版本的芹菜相比,基于类的任务似乎不会自动注册(即,如果配置了自动发现) 但是,我甚至无法手动注册基于类的任务 根据芹菜变化日志: 自版本4.0.1起,应可以手动注册任务: from celery import Celery, Task app = Celery() class CustomTask(Task): def run(self): return 'hello' app.register_task(CustomTask())

我用的是芹菜4.0.2版

与以前版本的芹菜相比,基于类的任务似乎不会自动注册(即,如果配置了自动发现)

但是,我甚至无法手动注册基于类的任务

根据芹菜变化日志:

自版本4.0.1起,应可以手动注册任务:

from celery import Celery, Task
app = Celery()

class CustomTask(Task):

    def run(self):
        return 'hello'

app.register_task(CustomTask())
但这似乎不起作用。有人知道如何做到这一点吗

我尝试了一些正在讨论的建议(除了集成中提到的自定义任务加载器):


快到了!您需要对注册的任务调用
delay()

这将有助于:

from celery import Celery, Task

app = Celery()


class CustomTask(Task):
    def run(self):
        return 'hello'


task = CustomTask()
app.register_task(task)

task.delay()

如果您需要
共享任务
装饰器:

from celery import Task, shared_task

class CustomTask(Task):
    def process(self):
        return 'hello'

@shared_task(bind=True, base=CustomTask)
def custom(self):
    self.process()
process
是启动任务的自定义名称(decorator重写
run
方法)

bind=True
将函数绑定到类实例


base=CustomTask
为任务设置基类

,但在其他文件上导入
task
时,基类不起作用。