【发布时间】:2011-07-20 10:52:56
【问题描述】:
我有一个看起来像这样的脚本:
#!/usr/bin/env python
# encoding: utf-8
import time, random, os, multiprocessing
def main():
NPROCESSES = 5
pool = multiprocessing.Pool(processes=NPROCESSES)
a = [1,2,3,4,5,6,7,8,9,0]
for _ in pool.imap_unordered(do_task, a):
pass
def do_task(n):
try:
might_crash(n)
except Hell, e:
print e, " crashed."
def might_crash(n):
time.sleep(3*random.random())
if random.randrange( 3 ) == 0:
raise Hell(n)
print n
class Hell(Exception):
pass
if __name__=="__main__":
main()
此脚本通常会打印来自 'a' 的值,但可能会随机引发异常。
我想捕获这些异常并将当前的 do_task() 放回队列中以便稍后重试。
如果当前任务失败,我如何将当前任务放回队列中?
【问题讨论】: