@@ -90,13 +90,9 @@ def _register_functions(self, server):
90
90
server .register_function (self .get_keyword_documentation )
91
91
server .register_function (self .stop_serve , 'stop_remote_server' )
92
92
93
- def serve (self , stop_with_signals = True , log = True ):
93
+ def serve (self , log = True ):
94
94
"""Start the server and wait for it to finish.
95
95
96
- :param stop_with_signals: Controls should INT, TERM and HUP signals be
97
- registered to stop serving. Can be disabled, for example,
98
- if running this method on a thread where registering
99
- signals is not possible.
100
96
:param log: Log message about startup or not.
101
97
102
98
Using this requires using ``serve=False`` when creating initializing
@@ -110,7 +106,7 @@ def serve(self, stop_with_signals=True, log=True):
110
106
is initialized. Calling :meth:`force_stop_serve` stops the server
111
107
unconditionally.
112
108
"""
113
- self ._server .serve (stop_with_signals , log )
109
+ self ._server .serve (log = log )
114
110
115
111
def stop_serve (self , log = True ):
116
112
"""Stop the server started by :meth:`serve`.
@@ -216,22 +212,25 @@ def _announce_end(self, log_end, port_file):
216
212
if port_file and os .path .exists (port_file ):
217
213
os .remove (port_file ) # TODO: Document that port file is removed
218
214
219
- def serve (self , stop_with_signals = True , log = True ):
215
+ def serve (self , log = True ):
220
216
self ._stop_serve = threading .Event ()
221
- with self ._stop_signals (stop_with_signals ):
217
+ with self ._stop_signals ():
222
218
self .start (log )
223
219
while not self ._stop_serve .is_set ():
224
220
self ._stop_serve .wait (1 )
225
221
self ._stop_serve = None
226
222
self .stop (log )
227
223
228
224
@contextmanager
229
- def _stop_signals (self , stop_with_signals = True ):
225
+ def _stop_signals (self ):
230
226
original = {}
231
- handler = lambda signum , frame : self .stop_serve ()
232
- for name in 'SIGINT' , 'SIGTERM' , 'SIGHUP' :
233
- if stop_with_signals and hasattr (signal , name ):
234
- original [name ] = signal .signal (getattr (signal , name ), handler )
227
+ stop = lambda signum , frame : self .stop_serve ()
228
+ try :
229
+ for name in 'SIGINT' , 'SIGTERM' , 'SIGHUP' :
230
+ if hasattr (signal , name ):
231
+ original [name ] = signal .signal (getattr (signal , name ), stop )
232
+ except ValueError : # Not in main thread
233
+ pass
235
234
try :
236
235
yield
237
236
finally :
0 commit comments