fix: sauberer Shutdown (Telegram Updater, CancelledError), WhatsApp-Polling auf 5s
This commit is contained in:
@@ -72,6 +72,13 @@ class TelegramChannel(BaseChannel):
|
||||
|
||||
async def stop(self) -> None:
|
||||
if self._app:
|
||||
# Korrekte PTB v20+ Shutdown-Reihenfolge:
|
||||
# Erst Updater stoppen, dann Application stoppen/shutdown
|
||||
try:
|
||||
if self._app.updater.running:
|
||||
await self._app.updater.stop()
|
||||
except Exception:
|
||||
pass
|
||||
await self._app.stop()
|
||||
await self._app.shutdown()
|
||||
logger.info("Telegram channel stopped")
|
||||
|
||||
12
main.py
12
main.py
@@ -85,14 +85,22 @@ async def main(with_tui: bool = True) -> None:
|
||||
else:
|
||||
# 8b. Nur API – wartet auf Ctrl-C / SIGTERM
|
||||
logger.info("Running in API-only mode (no TUI)")
|
||||
await api_task
|
||||
try:
|
||||
await api_task
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
finally:
|
||||
logger.info("MCM shutting down…")
|
||||
scheduler.shutdown(wait=False)
|
||||
api_task.cancel()
|
||||
try:
|
||||
await api_task
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
await telegram.stop()
|
||||
await whatsapp.stop()
|
||||
await sms.stop()
|
||||
api_task.cancel()
|
||||
logger.info("MCM stopped.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -21,10 +21,10 @@ def build_scheduler(whatsapp: "WhatsAppChannel") -> AsyncIOScheduler:
|
||||
|
||||
_scheduler = AsyncIOScheduler(timezone="UTC")
|
||||
|
||||
# WhatsApp-Polling alle 10 Sekunden (coalesce=True überspringt verpasste Läufe)
|
||||
# WhatsApp-Polling alle 5 Sekunden (Green API erlaubt 100 req/s)
|
||||
_scheduler.add_job(
|
||||
_poll_whatsapp,
|
||||
trigger=IntervalTrigger(seconds=10),
|
||||
trigger=IntervalTrigger(seconds=5),
|
||||
id="whatsapp-poll",
|
||||
name="WhatsApp incoming messages",
|
||||
max_instances=1,
|
||||
|
||||
Reference in New Issue
Block a user