11#!/usr/bin/env python3
22
3+ import sys
34import asyncio
45
56from charfinder import UnicodeNameIndex
1314@asyncio .coroutine
1415def handle_queries (reader , writer ):
1516 while True :
16- writer .write (PROMPT )
17- yield from writer .drain ()
17+ writer .write (PROMPT ) # can't yield from!
18+ yield from writer .drain () # must yield from!
1819 data = yield from reader .readline ()
1920 try :
2021 query = data .decode ().strip ()
@@ -29,15 +30,18 @@ def handle_queries(reader, writer):
2930 if lines :
3031 writer .writelines (line .encode () + CRLF for line in lines )
3132 writer .write (index .status (query , len (lines )).encode () + CRLF )
33+
3234 yield from writer .drain ()
35+ print ('Sent {} results' .format (len (lines )))
3336
3437 print ('Close the client socket' )
3538 writer .close ()
3639
3740
38- def main ():
41+ def main (address = '127.0.0.1' , port = 8888 ):
42+ port = int (port )
3943 loop = asyncio .get_event_loop ()
40- coro = asyncio .start_server (handle_queries , '127.0.0.1' , 8888 , loop = loop )
44+ coro = asyncio .start_server (handle_queries , address , port , loop = loop )
4145 server = loop .run_until_complete (coro )
4246
4347 host = server .sockets [0 ].getsockname ()
@@ -54,4 +58,4 @@ def main():
5458
5559if __name__ == '__main__' :
5660 index = UnicodeNameIndex ()
57- main ()
61+ main (* sys . argv [ 1 :] )
0 commit comments