Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.99 KB | None | 0 0
  1. import asyncio
  2. import signal
  3.  
  4. LISTEN_HOST = '0.0.0.0'
  5. LISTEN_PORT = 8888
  6.  
  7.  
  8. writers = []
  9.  
  10.  
  11. async def handler(reader, writer):
  12.     writers.append(writer)
  13.  
  14.     buf = b''
  15.     nbr_lines = 0
  16.  
  17.     while True:
  18.         data = await reader.read(100)
  19.         if not data:
  20.             break
  21.         data = buf + data
  22.         lines = data.split(b'\n')
  23.         buf = lines.pop()
  24.         nbr_lines += len(lines)
  25.  
  26.     print('{} lines sent'.format(nbr_lines))
  27.     writer.close()
  28.  
  29.  
  30. async def run(loop):
  31.     def close():
  32.         for writer in writers:
  33.             writer.close()
  34.         server.close()
  35.  
  36.     server = await asyncio.start_server(
  37.         handler, LISTEN_HOST, LISTEN_PORT, loop=loop)
  38.  
  39.     for signame in ('SIGINT', 'SIGTERM'):
  40.         signum = getattr(signal, signame)
  41.         loop.add_signal_handler(signum, close)
  42.  
  43.     await server.wait_closed()
  44.  
  45.  
  46. if __name__ == '__main__':
  47.     loop = asyncio.get_event_loop()
  48.     loop.run_until_complete(run(loop))
  49.     loop.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement