gpt4 book ai didi

python - Celery 动态任务/将 Celery 实现隐藏在接口(interface)后面

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:37 26 4
gpt4 key购买 nike

我正在尝试找出如何使用 Celery 实现我的异步作业,而不将它们绑定(bind)到 Celery 实现。

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

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

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

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

但这似乎不能用 celery 来完成,对吗?

最佳答案

也许一个解决方案,尽管非常丑陋,可能是定义一个动态加载作为参数传递的任务对象的 celery 任务:

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

关于python - Celery 动态任务/将 Celery 实现隐藏在接口(interface)后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12653745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com