refactoring

This commit is contained in:
Devaev Maxim 2020-06-04 06:27:52 +03:00
parent be9ce4e4ff
commit 9cee98310d
5 changed files with 17 additions and 14 deletions

View File

@ -27,6 +27,8 @@ import signal
from typing import Tuple
from typing import List
import setproctitle
# =====
async def run_process(cmd: List[str], err_to_null: bool=False) -> asyncio.subprocess.Process: # pylint: disable=no-member
@ -34,7 +36,7 @@ async def run_process(cmd: List[str], err_to_null: bool=False) -> asyncio.subpro
*cmd,
stdout=asyncio.subprocess.PIPE,
stderr=(asyncio.subprocess.DEVNULL if err_to_null else asyncio.subprocess.STDOUT),
preexec_fn=preexec_ignore_sigint,
preexec_fn=ignore_sigint,
))
@ -44,5 +46,9 @@ async def read_process(cmd: List[str], err_to_null: bool=False) -> Tuple[asyncio
return (proc, stdout.decode(errors="ignore").strip())
def preexec_ignore_sigint() -> None:
def ignore_sigint() -> None:
signal.signal(signal.SIGINT, signal.SIG_IGN)
def rename_process(suffix: str, prefix: str="kvmd") -> None:
setproctitle.setproctitle(f"{prefix}/{suffix}: {setproctitle.getproctitle()}")

View File

@ -37,7 +37,6 @@ from typing import Any
import aiohttp
import aiohttp.web
import setproctitle
from ...logging import get_logger
@ -56,6 +55,7 @@ from ...validators.kvm import valid_stream_quality
from ...validators.kvm import valid_stream_fps
from ... import aiotools
from ... import aioproc
from .auth import AuthManager
from .info import InfoManager
@ -215,7 +215,7 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
def run(self, **kwargs: Any) -> None: # type: ignore # pylint: disable=arguments-differ
self.__hid.start()
setproctitle.setproctitle(f"kvmd/main: {setproctitle.getproctitle()}")
aioproc.rename_process("main")
super().run(**kwargs)
async def _make_app(self) -> aiohttp.web.Application:

View File

@ -22,7 +22,6 @@
import os
import select
import signal
import multiprocessing
import multiprocessing.queues
import queue
@ -31,11 +30,10 @@ import time
from typing import Dict
import setproctitle
from ....logging import get_logger
from .... import aiomulti
from .... import aioproc
# =====
@ -78,8 +76,8 @@ class BaseDeviceProcess(multiprocessing.Process): # pylint: disable=too-many-in
logger = get_logger(0)
logger.info("Started HID-%s pid=%d", self.__name, os.getpid())
signal.signal(signal.SIGINT, signal.SIG_IGN)
setproctitle.setproctitle(f"kvmd/hid-{self.__name}: {setproctitle.getproctitle()}")
aioproc.ignore_sigint()
aioproc.rename_process(f"hid-{self.__name}")
while not self.__stop_event.is_set():
try:

View File

@ -21,7 +21,6 @@
import os
import signal
import asyncio
import multiprocessing
import multiprocessing.queues
@ -35,7 +34,6 @@ from typing import Dict
from typing import AsyncGenerator
import serial
import setproctitle
from ...logging import get_logger
@ -43,6 +41,7 @@ from ...keyboard.mappings import KEYMAP
from ... import aiotools
from ... import aiomulti
from ... import aioproc
from ... import gpio
from ...yamlconf import Option
@ -278,8 +277,8 @@ class Plugin(BaseHid, multiprocessing.Process): # pylint: disable=too-many-inst
logger = get_logger(0)
logger.info("Started HID pid=%d", os.getpid())
signal.signal(signal.SIGINT, signal.SIG_IGN)
setproctitle.setproctitle(f"kvmd/hid: {setproctitle.getproctitle()}")
aioproc.ignore_sigint()
aioproc.rename_process("hid")
while not self.__stop_event.is_set():
try:

View File

@ -45,7 +45,7 @@ async def _run_process(cmd: str, input: Optional[str]=None) -> None: # pylint:
proc = await asyncio.create_subprocess_exec(
*cmd.split(" "),
stdin=(asyncio.subprocess.PIPE if input is not None else None),
preexec_fn=aioproc.preexec_ignore_sigint,
preexec_fn=aioproc.ignore_sigint,
)
await proc.communicate(input.encode() if input is not None else None)
assert proc.returncode == 0