5
我开始使用芹菜和Python,我有一个问题可能很简单,但我似乎无法找到任何合适的答案。Python芹菜:检索任务的参数,如果有例外
如果我有一堆的任务,其中一个引发异常,是否有一种方法来检索传递给所述任务的参数?
举例来说,如果我想获得一些主机名解析到IPS,以及创建一个任务...
@tasks_app.task
def resolve_hostname(hostname):
return (hostname, {hst.address for hst in dns.resolver.query(hostname)})
...它可以抛出一个异常,有没有得到的方式那个hostname
参数的值在异常发生时的调用之外的值?
比方说,我喜欢小组的任务:
ip_subtasks = group(
resolve_hostname.s(hostname) for hostname in ['google.com',
'yahoo.com',
'failure.kommm']
)()
最后一个(即试图解决failure.kommm
)将引发异常。我希望把芹菜任务get()
方法try/catch
内,并显示一条消息说出了点试图解决failure.kommm时错误(类似如下所示):
for ip_subtask in ip_subtasks:
try:
hostname, ips = ip_subtask.get(timeout=45)
except dns.exception.DNSException, e:
# I WISHED THIS WORKED:
logger.exception("Something happened when trying"
" to resolve %s" % ip_subtask.args[0])
所以,这就是问题......如果我有任务实例本身,是否有一种方法可以检索任务执行的参数?
预先感谢您。
你有没有看一个'on_failure'处理? http://celery.readthedocs.org/en/latest/userguide/tasks.html#on_failure – Ngenator 2014-10-06 20:33:16
我有,我认为它会工作,但我不知道如何使用它,当任务通过创建像上面显示的装饰器(正如我所说的,我是一个Celery的新手) – BorrajaX 2014-10-06 21:06:02
查看上面的处理程序部分,它告诉你如何用抽象类来做到这一点。 – Ngenator 2014-10-06 21:16:02