Python 芹菜动态任务/在接口后面隐藏芹菜实现

Python 芹菜动态任务/在接口后面隐藏芹菜实现,python,interface,celery,encapsulation,Python,Interface,Celery,Encapsulation,我试图弄清楚如何使用芹菜实现异步作业,而不将它们与芹菜实现绑定 如果我有一个接口,它接受要调度的对象,例如可调用对象(或包装可调用对象的对象): 我可以用踏板模块来实现它: ThreadingTaskManager(object) def schedule(task): Thread(task).start() # or similar 但似乎芹菜做不到,对吗 也许有一种解决方案(尽管相当难看)是定义一个芹菜任务,动态加载作为参数传递的任务对象: @celery.tas

我试图弄清楚如何使用芹菜实现异步作业,而不将它们与芹菜实现绑定

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

我可以用踏板模块来实现它:

ThreadingTaskManager(object)
    def schedule(task):
        Thread(task).start() # or similar

但似乎芹菜做不到,对吗

也许有一种解决方案(尽管相当难看)是定义一个芹菜任务,动态加载作为参数传递的任务对象:

@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)
@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)