2016-05-12 45 views
2

我試圖在沒有使用芹菜的特定時間後執行python函數。當requests發生任何異常,然後在60秒後我再次執行相同的功能時,我正在使用requests來訪問網址。在沒有使用芹菜的特定時間後執行python函數

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

但是這是遞歸函數,會消耗內存。我想編寫一個異步函數來執行我的任務。如何才能做到這一點?

+0

但django進入圖片的位置?這是純Python – e4c5

回答

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