Celery动态任务/在in后面隐藏Celery实现

2024-10-06 12:09:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找出如何用Celery实现我的异步作业,而不是将它们与Celery实现捆绑在一起。在

如果我有一个接口接受要调度的对象,例如可调用对象(或包装可调用对象的对象):

ITaskManager(Interface):
    def schedule(task):
        #eventually run task

我可以用踩踏模块来实现:

^{pr2}$

但看来芹菜是做不到的,对吧?在


Tags: 模块对象runtaskdef作业调度interface
1条回答
网友
1楼 · 发布于 2024-10-06 12:09:41

也许有一种解决方案,尽管很难看,但可以定义一个芹菜任务,动态加载作为参数传递的任务对象:

@celery.task
def taskrunner(taskname):
    taskModule = __import__(taskname)
    taskModule.run()

CeleryTaskManager(object)
    def schedule(task):
        taskrunner.delay(task.__file__)


from mytask import run

CeleryTaskManager().schedule(run)

相关问题 更多 >