forked from goodboy/tractor
				
			Experiment: only disable SIGINT handling in children
							parent
							
								
									40fcc2bd68
								
							
						
					
					
						commit
						fa785353da
					
				| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					@ -690,6 +692,12 @@ class Actor:
 | 
				
			||||||
                for attr, value in parent_data.items():
 | 
					                for attr, value in parent_data.items():
 | 
				
			||||||
                    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