2014-09-04 134 views
1

我新的python和web開發,我有一個基本的問題,我相信。
我正在用金字塔運行我的服務器,並使用nohup.out將輸出寫入文件。Python - nohup.out不顯示打印語句

nohup ../bin/pserve development.ini 

當我做tail -f nohup.out
我可以看到所有的輸出從我的代碼logging.info()電話來了。
但我沒有看到來自print()調用的所有輸出。

這是什麼原因,我怎麼能設置它,我會看到nohup文件中的print()?

回答

0

打印輸出在未到達終端時被緩衝。 nohup用非終端(實際上是一個文件)替換stdout。

在沒有任何代碼的情況下,我所能做的只是猜測,但最可能的答案是您的輸出緩衝在python進程中,並且當緩衝區填滿時它將被刷新到nohup.out。要查看是否屬於這種情況,請嘗試添加更多打印件以更快地填充緩衝區。

8

您可以使用stdbuf -oL來刷新打印語句。命令看起來像

nohup stdbuf -oL python python_script.py > nohup.out 
0

您可以使用

nohup python -u python_script.py & 
+1

歡迎堆棧溢出!感謝您的代碼片段,它可能會提供一些有限的即時幫助。通過展示*爲什麼*這是一個很好的解決方案,並且使它對未來的讀者更有用,一個正確的解釋[將大大提高](// meta.stackexchange.com/q/114762)其長期價值其他類似的問題。請[編輯]你的答案以添加一些解釋,包括你所做的假設。 – 2017-10-24 11:54:23