在特定时间后执行python函数而不使用芹菜

时间:2016-05-12 10:19:32

标签: python django

我试图在特定时间后执行python函数而不使用芹菜。当requests引发任何异常时,我正在使用requests使用网址,然后在60秒后我再次执行相同的功能。

def myfun():
    try:
        response = requests.post('url', data=data)
    except Exception as e:
        sleep(60)
        myfun()

但这是递归函数,会占用内存。我想写一个异步函数来执行我的任务。怎么办呢?

1 个答案:

答案 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