首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Celery动态任务/在接口后面隐藏Celery实现

Celery动态任务/在接口后面隐藏Celery实现
EN

Stack Overflow用户
提问于 2012-09-29 22:52:59
回答 1查看 635关注 0票数 4

我正在尝试弄清楚如何使用Celery实现我的异步作业,而不是将它们绑定到Celery实现。

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

代码语言:javascript
复制
ITaskManager(Interface):
    def schedule(task):
        #eventually run task

我可能会用treading模块实现它:

代码语言:javascript
复制
ThreadingTaskManager(object)
    def schedule(task):
        Thread(task).start() # or similar

但是看起来芹菜不能做到这一点,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-30 00:01:26

也许一种解决方案,尽管相当丑陋,可能是定义一个芹菜任务,它动态加载作为参数传递的任务对象:

代码语言:javascript
复制
@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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12653745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档