vmagamedov / grpclib

Pure-Python gRPC implementation for asyncio
http://grpclib.readthedocs.io
BSD 3-Clause "New" or "Revised" License
936 stars 92 forks source link

graceful_exit raise NotImplementedError under Windows #95

Closed honglei closed 4 years ago

honglei commented 4 years ago

for examples/helloworld/server.py, it could not run under windows, and raised the following error:

 File "E:\PythonLibs\dmaproxy\tests\grpclib_\server.py", line 28, in <module>
  asyncio.run(main())
File "D:\ProgramData\Anaconda3\envs\win64py37\Lib\asyncio\runners.py", line 43, in run
  return loop.run_until_complete(main)
File "D:\ProgramData\Anaconda3\envs\win64py37\Lib\asyncio\base_events.py", line 579, in run_until_complete
  return future.result()
 File "E:\PythonLibs\dmaproxy\tests\grpclib_\server.py", line 21, in main
  with graceful_exit([server]):
File "D:\ProgramData\Anaconda3\envs\win64py37\Lib\contextlib.py", line 112, in __enter__
  return next(self.gen)
File "D:\ProgramData\Anaconda3\envs\win64py37\Lib\site-packages\grpclib\utils.py", line 215, in graceful_exit
  loop.add_signal_handler(sig_num, _exit_handler, sig_num, servers, flag)
File "D:\ProgramData\Anaconda3\envs\win64py37\Lib\asyncio\events.py", line 540, in add_signal_handler
  raise NotImplementedError

builtins.NotImplementedError

https://stackoverflow.com/questions/45987985/asyncio-loops-add-signal-handler-in-windows

vmagamedov commented 4 years ago

Sorry, but I'm closing this issue for now since asyncio don't support signals in Windows. Added several notes in examples and docs to state this behaviour in a7157cdcd94394552cc23507a8cc97d47f5bfc6b. I'm trying to keep examples as simple as possible and production-ready, so I don't want just to remove graceful_exit usage or make it optional in order to make examples runnable in Windows.