2011-02-23 4 views
1
예를 들어

와 (끝없는) 시스템 호출 서비스를 제공 할 수,이 코드가 있다고 가정? 중단 지점이 없기 때문에 폴링 루프를 어디에 연결할 것인지 잘 모릅니다.이 어떻게 토네이도

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() 
+0

는 각 self.write (선) 후 self.flush()를 추가하려고 있나요? – Schildmeijer

+0

http://groups.google.com/group/python-tornado/browse_thread/thread/10a28bd316ee1a7f/941973bc71efa916?show_docid=941973bc71efa916 – Schildmeijer

+0

@schildmeijer 참조 1) 플러시는 하위 프로세스의 파이프가 여전히 스트리밍 중이므로 효과적이지 않습니다. 2) 그것은 내가 여기에 어떤 대답도 얻지 못했기 때문에 그곳에 질문을 올리는 것입니다. –

답변

1

리디렉션는 tcpdump의 출력을 파일로이 사용 :

를 보다 더, 인쇄 라인이 작동하기 때문에, 브라우저, 바로 그 라인을하지 않는 아래 참조 (내가 볼 줄은 터미널에 버려진)

https://bitbucket.org/silverspell/tornadolog

는 희망이 도움 :)

+0

특정 코드가 작동하지 않는 것 같아요 .-하지만이 방향을 시도 할 것입니다. 어쨌든 고마워요. –

+0

잘 살펴 봤습니다. "tcpdump.txt"를 사용하여 수동으로 tcpdump를 시작하고 22 행에서 파일 이름 변수를 변경하면 상자에서 그대로 작동합니다. 내 코드이므로 나에게 당신이 겪고있는 문제를 안다. :) –

+0

https://gist.github.com/845994에서 내 행동을 보라. 간단히 파일을 만들었고, 그 파일에 tornadolog.py (하드 코딩 됨)를 가리킨다. 시작되었지만 브라우저 창 (wget)에는 아무 것도 없습니다. –

관련 문제