2012-10-20 32 views
0

我寫了一個刮刀,做HTML刮,然後使用API​​來獲取一些數據來運行,因爲它的一個非常冗長的代碼我沒有把它放在這裏。我已經實現了隨機睡眠方法,並在我的代碼中使用它來監視節流。但我想確保我不會過度運行此代碼,所以我的想法是運行3-4小時,然後讓運動員喘口氣,然後再運行。我沒有做過這樣的蟒蛇,我試圖尋找,但真的不知道從哪裏開始任何東西,如果我得到這方面的一些指導,這將是巨大的。如果python有一個特定的模塊鏈接,這將是一個很大的幫助。的Python:限制碼一個小時

也是這個有關?我不需要這種併發症?

Suggestions for a Cron like scheduler in Python?

我可以在每一次拼搶任務功能,並且我有main方法調用所有這些功能。

+0

@Martijn皮特斯感謝固定錯別字。 –

回答

1

可以使用threading.Timer對象超過時間之後安排一箇中斷信號,主線程:

import thread, threading 

def longjob(): 
    try: 
     # do your job 
     while True: 
      print '*', 
    except KeyboardInterrupt: 
     # do your cleanup 
     print 'ok, giving up' 

def terminate(): 
    print 'sorry, pal' 
    thread.interrupt_main() 

time_limit = 5 # terminate in 5 seconds 
threading.Timer(time_limit, terminate).start() 
longjob() 

在crontab將這個和運行每time_limit + 2分鐘。

+0

感謝一個偉大的例子我從來沒有處理過任何cron作業任何好的教程,我可以按照..?上設置cron作業/ crontab中 –

+1

@零假設:在這裏你去:http://www.unixgeeks.org/security/newbie/unix/cron-1.html – georg

+0

感謝的重要來源。 –

1

你可以只記下要運行的東西每次開始時間,並確保你沒有超過給定的最大值。像這樣的東西應該讓你開始:

from datetime import datetime 
MAX_SECONDS = 3600 

# note the time you have started 
start = datetime.now() 

while True: 
    current = datetime.now() 
    diff = current-start 
    if diff.seconds >= MAX_SECONDS: 
     # break the loop after MAX_SECONDS 
     break 

    # MAX_SECONDS not exceeded, run more tasks 
    scrape_some_more() 

這是link to the datetime module documentation