mirror of
https://github.com/openmax-server/server.git
synced 2026-05-12 16:55:47 +00:00
Решение проблемы обработки sigterm
This commit is contained in:
21
src/main.py
21
src/main.py
@@ -1,7 +1,9 @@
|
||||
# Импортирование библиотек
|
||||
import asyncio
|
||||
import logging
|
||||
import signal
|
||||
import ssl
|
||||
import sys
|
||||
|
||||
from common.config import ServerConfig
|
||||
from common.push import PushService
|
||||
@@ -175,10 +177,25 @@ async def main():
|
||||
|
||||
api["telegram_bot"] = controllers["telegrambot"]
|
||||
|
||||
tasks = [controller.launch(api) for controller in controllers.values()]
|
||||
coros = [controller.launch(api) for controller in controllers.values()]
|
||||
running_tasks = [asyncio.create_task(coro) for coro in coros]
|
||||
|
||||
# Обработчик sigterm
|
||||
loop = asyncio.get_running_loop()
|
||||
|
||||
def _shutdown(sig):
|
||||
for task in running_tasks:
|
||||
task.cancel()
|
||||
|
||||
if sys.platform != "win32":
|
||||
for sig in (signal.SIGTERM, signal.SIGINT):
|
||||
loop.add_signal_handler(sig, _shutdown, sig)
|
||||
|
||||
# Запускаем контроллеры
|
||||
await asyncio.gather(*tasks)
|
||||
try:
|
||||
await asyncio.gather(*running_tasks)
|
||||
except asyncio.CancelledError:
|
||||
logging.info("Все задачи завершены, выходим")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -2,6 +2,7 @@ import logging
|
||||
import time
|
||||
import traceback
|
||||
import websockets
|
||||
import asyncio
|
||||
from common.proto_web import WebProto
|
||||
from oneme.processors import Processors
|
||||
from common.rate_limiter import RateLimiter
|
||||
@@ -410,4 +411,9 @@ class OnemeWS:
|
||||
|
||||
self.logger.info(f"WebSocket запущен на порту {self.port}")
|
||||
|
||||
await self.server.wait_closed()
|
||||
try:
|
||||
await self.server.wait_closed()
|
||||
except asyncio.CancelledError:
|
||||
self.server.close()
|
||||
await self.server.wait_closed()
|
||||
raise
|
||||
@@ -1,6 +1,7 @@
|
||||
import logging
|
||||
import traceback
|
||||
import websockets
|
||||
import asyncio
|
||||
from common.proto_web import WebProto
|
||||
from tamtam.processors import Processors
|
||||
from common.rate_limiter import RateLimiter
|
||||
@@ -229,4 +230,9 @@ class TamTamWS:
|
||||
|
||||
self.logger.info(f"TT WebSocket запущен на порту {self.port}")
|
||||
|
||||
await self.server.wait_closed()
|
||||
try:
|
||||
await self.server.wait_closed()
|
||||
except asyncio.CancelledError:
|
||||
self.server.close()
|
||||
await self.server.wait_closed()
|
||||
raise
|
||||
Reference in New Issue
Block a user