Refactor project structure and enhance Docker support
- Removed unnecessary `__init__.py` and `Dockerfile` to streamline project organization. - Updated `.dockerignore` and `.gitignore` to improve exclusion patterns for build artifacts and environment files. - Enhanced `Makefile` with new commands for managing Docker containers and added help documentation. - Introduced `pyproject.toml` for better project metadata management and dependency tracking. - Updated `requirements.txt` to reflect changes in dependencies for metrics and monitoring. - Refactored various handler files to improve code organization and maintainability.
This commit is contained in:
@@ -12,6 +12,7 @@ from helper_bot.main import start_bot
|
||||
from helper_bot.utils.base_dependency_factory import get_global_instance
|
||||
from helper_bot.server_monitor import ServerMonitor
|
||||
from helper_bot.utils.auto_unban_scheduler import get_auto_unban_scheduler
|
||||
from helper_bot.utils.metrics_exporter import MetricsManager
|
||||
|
||||
|
||||
async def start_monitoring(bdf, bot):
|
||||
@@ -46,6 +47,9 @@ async def main():
|
||||
auto_unban_scheduler.set_bot(monitor_bot)
|
||||
auto_unban_scheduler.start_scheduler()
|
||||
|
||||
# Инициализируем метрики
|
||||
metrics_manager = MetricsManager(host="0.0.0.0", port=8000)
|
||||
|
||||
# Флаг для корректного завершения
|
||||
shutdown_event = asyncio.Event()
|
||||
|
||||
@@ -58,9 +62,10 @@ async def main():
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
|
||||
# Запускаем бота и мониторинг
|
||||
# Запускаем бота, мониторинг и метрики
|
||||
bot_task = asyncio.create_task(start_bot(bdf))
|
||||
monitor_task = asyncio.create_task(monitor.monitor_loop())
|
||||
metrics_task = asyncio.create_task(metrics_manager.start())
|
||||
|
||||
try:
|
||||
# Ждем сигнала завершения
|
||||
@@ -80,14 +85,18 @@ async def main():
|
||||
print("Останавливаем планировщик автоматического разбана...")
|
||||
auto_unban_scheduler.stop_scheduler()
|
||||
|
||||
print("Останавливаем метрики...")
|
||||
await metrics_manager.stop()
|
||||
|
||||
print("Останавливаем задачи...")
|
||||
# Отменяем задачи
|
||||
bot_task.cancel()
|
||||
monitor_task.cancel()
|
||||
metrics_task.cancel()
|
||||
|
||||
# Ждем завершения задач
|
||||
try:
|
||||
await asyncio.gather(bot_task, monitor_task, return_exceptions=True)
|
||||
await asyncio.gather(bot_task, monitor_task, metrics_task, return_exceptions=True)
|
||||
except Exception as e:
|
||||
print(f"Ошибка при остановке задач: {e}")
|
||||
|
||||
@@ -97,4 +106,12 @@ async def main():
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
||||
try:
|
||||
asyncio.run(main())
|
||||
except AttributeError:
|
||||
# Fallback for Python 3.6-3.7
|
||||
loop = asyncio.get_event_loop()
|
||||
try:
|
||||
loop.run_until_complete(main())
|
||||
finally:
|
||||
loop.close()
|
||||
|
||||
Reference in New Issue
Block a user