我试图在特定时间后执行python函数而不使用芹菜。当requests
引发任何异常时,我正在使用requests
使用网址,然后在60秒后我再次执行相同的功能。
def myfun():
try:
response = requests.post('url', data=data)
except Exception as e:
sleep(60)
myfun()
但这是递归函数,会占用内存。我想写一个异步函数来执行我的任务。怎么办呢?
答案 0 :(得分:1)
您可以在python多处理中使用同步任务。这是一个例子
from multiprocessing import Pool
import time
def f(x):
return x*x
if __name__ == '__main__':
pool = Pool(processes=4) # start 4 worker processes
result = pool.apply_async(f, (10,)) # evaluate "f(10)" asynchronously in a single process
print result.get(timeout=1) # prints "100" unless your computer is *very* slow
print pool.map(f, range(10)) # prints "[0, 1, 4,..., 81]"
it = pool.imap(f, range(10))
print it.next() # prints "0"
print it.next() # prints "1"
print it.next(timeout=1) # prints "4" unless your computer is *very* slow
result = pool.apply_async(time.sleep, (10,))
print result.get(timeout=1) # raises multiprocessing.TimeoutError
阅读完整文档here。