Advertisement
Guest User

Untitled

a guest
Jul 24th, 2014
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import socket
  4. import tornado.iostream
  5. import tornado.ioloop
  6.  
  7. def print_message ( data ):
  8. print 'client received', data
  9.  
  10. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM, 0)
  11. stream = tornado.iostream.IOStream(s)
  12. stream.connect(('localhost',2001))
  13. stream.read_until('',print_message)
  14. stream.write('test message')
  15. tornado.ioloop.IOLoop().instance().start()
  16.  
  17. #!/usr/bin/env python
  18.  
  19. import tornado.ioloop
  20. import tornado.tcpserver
  21. import tornado.iostream
  22. import socket
  23. import concurrent.futures
  24. import functools
  25.  
  26. def handle_request ( data ):
  27. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)
  28. out_stream = tornado.iostream.IOStream(s)
  29. out_stream.connect(('localhost',2002))
  30. future = out_stream.read_until('')
  31. out_stream.write(data+'')
  32. return future.result()
  33.  
  34. class server_a (tornado.tcpserver.TCPServer):
  35.  
  36. def return_response ( self, in_stream, future ):
  37. in_stream.write(future.result()+'')
  38.  
  39. def handle_read ( self, in_stream, data ):
  40. future = self.executor.submit(handle_request,data)
  41. future.add_done_callback(functools.partial(self.return_response,in_stream))
  42.  
  43. def handle_stream ( self, in_stream, address ):
  44. in_stream.read_until('',functools.partial(self.handle_read,in_stream))
  45.  
  46. def __init__ ( self ):
  47. self.executor = concurrent.futures.ProcessPoolExecutor()
  48. tornado.tcpserver.TCPServer.__init__(self)
  49.  
  50. server = server_a()
  51. server.bind(2001)
  52. server.start(0)
  53. tornado.ioloop.IOLoop().instance().start()
  54.  
  55. #!/usr/bin/env python
  56.  
  57. import tornado.ioloop
  58. import tornado.tcpserver
  59. import functools
  60.  
  61. class server_b (tornado.tcpserver.TCPServer):
  62.  
  63. def handle_read ( self, in_stream, data ):
  64. in_stream.write('server B read'+data+'')
  65.  
  66. def handle_stream ( self, in_stream, address ):
  67. in_stream.read_until('',functools.partial(self.handle_read,in_stream))
  68.  
  69. server = server_b()
  70. server.bind(2002)
  71. server.start(0)
  72. tornado.ioloop.IOLoop().instance().start()
  73.  
  74. ERROR:concurrent.futures:exception calling callback for <Future at 0x10654b890 state=finished raised OSError>
  75. Traceback (most recent call last):
  76. File "/usr/local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 299, in _invoke_callbacks
  77. callback(self)
  78. File "./a.py", line 26, in return_response
  79. in_stream.write(future.result()+'')
  80. File "/usr/local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 397, in result
  81. return self.__get_result()
  82. File "/usr/local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 356, in __get_result
  83. raise self._exception
  84. OSError: [Errno 9] Bad file descriptor
  85.  
  86. def stop_loop ( future ):
  87. tornado.ioloop.IOLoop.current().stop()
  88.  
  89. def handle_request ( data ):
  90. tornado.ioloop.IOLoop.clear_current()
  91. tornado.ioloop.IOLoop.clear_instance()
  92. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)
  93. out_stream = tornado.iostream.IOStream(s)
  94. out_stream.connect(('localhost',2002))
  95. future = out_stream.read_until('')
  96. future.add_done_callback(stop_loop)
  97. out_stream.write(data+'')
  98. tornado.ioloop.IOLoop.instance().start()
  99. return future.result()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement