在芹菜抽象任务类中捕获超时

时间:2014-07-12 07:12:46

标签: python timeout celery

我有芹菜工人,我希望他们有60秒的时间限制,如果达到超时或任务完成则清理。 我知道我应该使用软时间限制,但不是为每个任务重写try ... catch子句,我想使用一个抽象的任务类来做到这一点 - 在以下几行中:

class BaseTask(Task):
    abstract = True

    def apply(self, args=None, kwargs=None, link=None, link_error=None, **options):
        try:
            super(self.__class__, self).apply(args, kwargs, link, link_error, **options)
        except SoftTimeLimitExceeded:
            print "cleanup time!"

这段代码不起作用,但有没有办法实现这个目标?

我发现something可能与我需要的相似:

class BaseTask(Task):
    def __call__(self, *args, **kwargs):
        try:
            print "i'm here"
            return self.run(*args, **kwargs)
        except SoftTimeLimitExceeded:
            print "cleanup time!"

但是那里没有例外("我在这里"被打印)

0 个答案:

没有答案