我正在尝试弄清楚如何使用Celery实现我的异步作业,而不是将它们绑定到Celery实现。
如果我有一个接受要调度的对象的接口,比如可调用对象(或包装可调用对象的对象):
ITaskManager(Interface):
def schedule(task):
#eventually run task我可能会用treading模块实现它:
ThreadingTaskManager(object)
def schedule(task):
Thread(task).start() # or similar但是看起来芹菜不能做到这一点,对吗?
发布于 2012-09-30 00:01:26
也许一种解决方案,尽管相当丑陋,可能是定义一个芹菜任务,它动态加载作为参数传递的任务对象:
@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)https://stackoverflow.com/questions/12653745
复制相似问题