例如一個(上房)系統調用,假設我有這樣的代碼:我怎麼能起到與龍捲風
def dump():
tcpdump = subprocess.Popen("tcpdump -nli any",
stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
outputfile = tcpdump.stdout
for line in outputfile:
print line,
我怎麼能起到這樣的輸出到瀏覽器? 由於沒有停止點,我不知道在哪裏掛接輪詢循環。 不僅如此,作爲打印線工程(我看線甩在終端上),瀏覽器沒有得到同樣的線路,見下圖:
class TCPDumpHandler(tornado.web.RequestHandler):
def get(self):
self.write("<form method='post' action='/log'><input type='submit'></form>")
@tornado.web.asynchronous
def post(self):
tcpdump = subprocess.Popen("tcpdump -nli any",
stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
outputfile = tcpdump.stdout
for line in outputfile:
print line,
self.write(line)
self.finish()
你嘗試過每self.write(線)後添加self.flush()? – Schildmeijer 2011-02-23 16:36:35
請參閱http://groups.google.com/group/python-tornado/browse_thread/thread/10a28bd316ee177/941973bc71efa916?show_docid=941973bc71efa916 – Schildmeijer 2011-02-23 19:11:20
@schildmeijer 1)由於子流程管道仍在流式傳輸,因此flush無效。 2)那是我在那裏發佈的問題,因爲我沒有得到任何答案,在這裏 – 2011-02-23 19:56:15