@@ -90,13 +90,9 @@ def _register_functions(self, server):
9090 server .register_function (self .get_keyword_documentation )
9191 server .register_function (self .stop_serve , 'stop_remote_server' )
9292
93- def serve (self , stop_with_signals = True , log = True ):
93+ def serve (self , log = True ):
9494 """Start the server and wait for it to finish.
9595
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.
10096 :param log: Log message about startup or not.
10197
10298 Using this requires using ``serve=False`` when creating initializing
@@ -110,7 +106,7 @@ def serve(self, stop_with_signals=True, log=True):
110106 is initialized. Calling :meth:`force_stop_serve` stops the server
111107 unconditionally.
112108 """
113- self ._server .serve (stop_with_signals , log )
109+ self ._server .serve (log = log )
114110
115111 def stop_serve (self , log = True ):
116112 """Stop the server started by :meth:`serve`.
@@ -216,22 +212,25 @@ def _announce_end(self, log_end, port_file):
216212 if port_file and os .path .exists (port_file ):
217213 os .remove (port_file ) # TODO: Document that port file is removed
218214
219- def serve (self , stop_with_signals = True , log = True ):
215+ def serve (self , log = True ):
220216 self ._stop_serve = threading .Event ()
221- with self ._stop_signals (stop_with_signals ):
217+ with self ._stop_signals ():
222218 self .start (log )
223219 while not self ._stop_serve .is_set ():
224220 self ._stop_serve .wait (1 )
225221 self ._stop_serve = None
226222 self .stop (log )
227223
228224 @contextmanager
229- def _stop_signals (self , stop_with_signals = True ):
225+ def _stop_signals (self ):
230226 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
235234 try :
236235 yield
237236 finally :
0 commit comments