会社でIPythonのセミナーをやったので、1時間でやっつけてみたスクリプト。
ものすごい恥ずかしいけど、誰も褒めてくれなかったから、ここに書いておく。ネタとしてはけっこう面白いと思ったんだけどなあ。
SocketServerの使い方は、指定されたページまたはファイルは存在しませんのを丸パクリ。
意味やあるべき姿もわからずに書いてたけど、たぶん俺はネットワークプログラミングに入門したほうがいいんだと思う。
from SocketServer import * import time RECV_BUF = 8192 class Handler(BaseRequestHandler): def setup(self): print "setup" self.file = open("/path/to/ipython_log", "rb") def handle(self): print "connect from:", self.client_address while True: ret = self.request.recv(RECV_BUF) if len(ret) == 0: break self.request.send(ret) while True: where = self.file.tell() line = self.file.readline() if not line: time.sleep(1) self.file.seek(where) else: self.request.send(line) self.request.close() def main(): sv = ThreadingTCPServer(('', 27070), Handler) ##sv = ForkingTCPServer(('', 7070), Handler) print 'listen to:', sv.socket.getsockname() sv.serve_forever() if __name__ == '__main__': main()
telnet tail-f_server 27070
ってやるとipythonのログが垂れ流されてきます。