2014-04-04 30 views
0

我有一個python while True循環最終以靜默結束,如何保持它運行?

while True: 
    poll_some_data_from_a_server_and_save_it_to_a_file() 
    time.sleep(5) 

循環。它運行了一段時間,但最終只是停止沒有錯誤。我在AWS上與

python file.py > logfile & 

運行它,並沒有暗示對所發生的事情,蟒蛇過程簡單地HTOP缺少一定時間後的日誌文件。我怎樣才能調試發生的事情並保持運行時間更長?

謝謝!

它在後臺運行的進程
+4

您是否嘗試過重定向stderr? –

+0

@ IgnacioVazquez-Abrams:鑑於他詢問「我該如何去調試」,你發佈的內容絕對是一個答案。 – nneonneo

回答

0

嘗試nohup的:

nohup python file.py > logfile & 

輸出將命名爲nohup.out

+0

謝謝!我正在嘗試它,並會報告它是如何工作的。嘗試瞭解bash重定向,是否類似於&>或2>? – gletscher

-2

你就可以創建一個無限循環的文件中記錄:

While 1: 
    try: 
     data = poll_some_data_from_a_server_and_save_it_to_a_file() 
     with open("FileName.txt", "a") as f: 
     for n in data: 
      f.write(n + "\n") 
     f.close() 
    except IOError as e: 
     print e 

它如果出現問題,會嘗試將它在輪詢中找到的每個項目寫入文件,並將其捕獲並打印到屏幕上。

+0

這是不正確的語法,'while 1 == True'並不是Pythonic。 – nneonneo

+0

@nneonneo雖然它可能不是「pythonic」的語法是正確的,但它不會在交互式python中引發錯誤。我修改了它。這是否更好? – iNoob

+0

我可以看到它的背後的想法,但我不知道它是一個IOError,有沒有辦法捕獲任何錯誤並打印它? – gletscher