当条件满足

时间:2017-03-30 11:40:50

标签: python-2.7 celery django-celery celery-task periodic-task

我有一个创建装饰器,如下所示,

sc_status = True
class schedule_stop_dec(object):
    def __init__(self, dec, condition):
        self.decorator = dec
        self.condition = condition

    def __call__(self, func):
        if not self.condition:
            # Return the function unchanged, not decorated.
            return func
        return self.decorator(func) 

#@periodic_task(run_every=crontab(hour=7, minute=10, day_of_week=1)
@schedule_stop_dec(periodic_task(run_every=crontab(hour=7, minute=10, day_of_week=1)), sc_status)
def delete_inactive_task():
    logger.log('Function triggered')

在上面的代码中如果我直接使用装饰器@periodic_task,那么当它到达指定的时间函数时,delete_inactive_task()会被正确触发,

但是当我使用scheduled_stop_dec和sc_status = True时,在日志中我得到以下消息,好像它被触发但在实际日志中如果我检查'功能已触发'消息不存在

[2017-03-30 10:10:00,000: INFO/MainProcess] Scheduler: Sending due task octopus.tasks.schedule_stop.delete_inactive_task (octopus.tasks.schedule_stop.delet                               e_inactive_task)

请告诉我如何使用指定的标志来控制#periodic_task装饰器。

我使用示例" how to do a conditional decorator in python 2.6"

尝试了上述示例

0 个答案:

没有答案