-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
executable file
·40 lines (31 loc) · 1.03 KB
/
Copy pathmain.py
File metadata and controls
executable file
·40 lines (31 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import asyncio
from asyncio.exceptions import CancelledError
import signal
from src.scanner.scanner_impl import ScannerImpl
import logging
import sys
import os
sys.stdout.reconfigure(line_buffering=True)
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
handlers=[
logging.FileHandler(f"logs/root.log"),
logging.StreamHandler(sys.stdout),
],
)
async def main():
try:
scanner = ScannerImpl(int(os.getenv("SCANNER_INTERVAL_MIN")))
scanner.start()
stop_event = asyncio.Event()
# Обработка сигналов для корректного завершения
loop = asyncio.get_running_loop()
for sig in (signal.SIGINT, signal.SIGTERM):
loop.add_signal_handler(sig, stop_event.set)
await stop_event.wait() # Ждём сигнала завершения
scanner.stop()
except CancelledError:
logging.critical("Exited")
if __name__ == "__main__":
asyncio.run(main())