清理代码
这段代码非常好;没有太多的清理工作.
>如果上下文管理器不能与as关键字一起使用,则不应从__enter__返回self.
检查课程时应该使用>,因为他们是单身人士……
>但您应该更喜欢使用issubclass来正确模拟异常处理.
实施这些更改可以:
from celery.exceptions import SoftTimeLimitExceeded
class Manager:
def __enter__(self):
pass
def __exit__(self, error_type, error, tb):
if issubclass(error_type, SoftTimeLimitExceeded):
logger.info('job killed.')
# swallow the exception
return True
@task
def do_foo():
with Manager():
run_task1()
run_task2()
run_task3()
调试
我创建了一个用于调试的模拟环境:
class SoftTimeLimitExceeded(Exception):
pass
class Logger:
info = print
logger = Logger()
del Logger
def task(f):
return f
def run_task1():
print("running tas