在Huey中为periodic_tasks实现context_task的最佳方法是什么?

时间:2019-04-10 15:17:03

标签: peewee python-huey

我正在寻找通过Huey中的定期任务来实现Peewee的上下文管理器的最佳方法。普通任务具有很好的Huey.context_task()装饰器,但对于周期性任务似乎没有类似的东西。

我是否正确地假设我只需要在定期任务中使用带(丑陋)的with语句?

1 个答案:

答案 0 :(得分:0)

应该能够执行以下操作:

from functools import wraps

huey = RedisHuey()
db = PostgresqlDatabase(...)

def db_periodic_task(*args, **kwargs):
    def decorator(fn):
        @wraps(fn)
        def new_task():
            with db:
                fn()
        return huey.periodic_task(*args, **kwargs)(new_task)
    return decorator

@db_periodic_task(crontab('0', '0'))
def my_periodic_task():
    # db will have been opened at start.
    # db will then be closed upon return.