Experiment: only disable SIGINT handling in children
							parent
							
								
									e51ba27d01
								
							
						
					
					
						commit
						b02731ca75
					
				|  | @ -1,5 +1,6 @@ | ||||||
| """ | """ | ||||||
| Actor primitives and helpers | Actor primitives and helpers | ||||||
|  | 
 | ||||||
| """ | """ | ||||||
| from collections import defaultdict | from collections import defaultdict | ||||||
| from functools import partial | from functools import partial | ||||||
|  | @ -11,6 +12,7 @@ import uuid | ||||||
| import typing | import typing | ||||||
| from typing import Dict, List, Tuple, Any, Optional, Union | from typing import Dict, List, Tuple, Any, Optional, Union | ||||||
| from types import ModuleType | from types import ModuleType | ||||||
|  | import signal | ||||||
| import sys | import sys | ||||||
| import os | import os | ||||||
| from contextlib import ExitStack | from contextlib import ExitStack | ||||||
|  | @ -730,6 +732,12 @@ class Actor: | ||||||
|                     else: |                     else: | ||||||
|                         setattr(self, attr, value) |                         setattr(self, attr, value) | ||||||
| 
 | 
 | ||||||
|  |                 # Disable sigint handling in children if NOT running in | ||||||
|  |                 # debug mode; we shouldn't need it thanks to our | ||||||
|  |                 # cancellation machinery. | ||||||
|  |                 if 'debug_mode' not in rvs: | ||||||
|  |                     signal.signal(signal.SIGINT, signal.SIG_IGN) | ||||||
|  | 
 | ||||||
|             return chan, accept_addr |             return chan, accept_addr | ||||||
| 
 | 
 | ||||||
|         except OSError:  # failed to connect |         except OSError:  # failed to connect | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ Sub-process entry points. | ||||||
| """ | """ | ||||||
| from functools import partial | from functools import partial | ||||||
| from typing import Tuple, Any | from typing import Tuple, Any | ||||||
| import signal |  | ||||||
| 
 | 
 | ||||||
| import trio  # type: ignore | import trio  # type: ignore | ||||||
| 
 | 
 | ||||||
|  | @ -15,7 +14,7 @@ log = get_logger(__name__) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def _mp_main( | def _mp_main( | ||||||
|     actor: 'Actor',  # type: ignore |     actor: 'Actor',  # type: ignore # noqa | ||||||
|     accept_addr: Tuple[str, int], |     accept_addr: Tuple[str, int], | ||||||
|     forkserver_info: Tuple[Any, Any, Any, Any, Any], |     forkserver_info: Tuple[Any, Any, Any, Any, Any], | ||||||
|     start_method: str, |     start_method: str, | ||||||
|  | @ -54,16 +53,13 @@ def _mp_main( | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def _trio_main( | def _trio_main( | ||||||
|     actor: 'Actor',  # type: ignore |     actor: 'Actor',  # type: ignore # noqa | ||||||
|     *, |     *, | ||||||
|     parent_addr: Tuple[str, int] = None, |     parent_addr: Tuple[str, int] = None, | ||||||
| ) -> None: | ) -> None: | ||||||
|     """Entry point for a `trio_run_in_process` subactor. |     """Entry point for a `trio_run_in_process` subactor. | ||||||
|     """ |  | ||||||
|     # Disable sigint handling in children; |  | ||||||
|     # we don't need it thanks to our cancellation machinery. |  | ||||||
|     signal.signal(signal.SIGINT, signal.SIG_IGN) |  | ||||||
| 
 | 
 | ||||||
|  |     """ | ||||||
|     log.info(f"Started new trio process for {actor.uid}") |     log.info(f"Started new trio process for {actor.uid}") | ||||||
| 
 | 
 | ||||||
|     if actor.loglevel is not None: |     if actor.loglevel is not None: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue