ydf0509 / funboost

pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚 。
Apache License 2.0
682 stars 135 forks source link

请教怎样在任务函数中发布一个延时任务? #128

Open bluebad opened 2 hours ago

bluebad commented 2 hours ago

以下是我的任务函数

@boost(BoosterParams(queue_name='task_queue_my_task', broker_kind=BrokerEnum.SQLITE_QUEUE))
def my_task():
    # 执行任务
    # 发布本任务
    my_task.publish({}, priority_control_config=PriorityConsumingControlConfig(countdown=TASK_INTERVAL))

这样写目的是想,任务完成之后,间隔多少时间,再次运行,因为任务本身可能比较耗时,不能做到正常的间隔执行,因而用这种方法。但是报错了: RuntimeError: cannot schedule new futures after interpreter shutdown 好像是执行该任务的进程在下次任务唤醒时就已经销毁了,那么,我的需求怎么实现呢,是不是还有其它办法?

ydf0509 commented 2 hours ago

这个问题很典型,主线程退出了,因为funboost没有主线程运行,你在你脚本代码最末尾加个while 1:time.sleep(100),阻止主线程退出就行了。

文档也有写这个报错的。