From 4202926830ad7eae4eaf265968f0dbf8565dff7d Mon Sep 17 00:00:00 2001 From: Homelab Cursor Date: Sat, 21 Mar 2026 13:20:45 +0100 Subject: [PATCH] fix: asyncio Fallback-Loop fuer daily_forecast (kein JobQueue) --- .../__pycache__/llm.cpython-311.pyc | Bin 27673 -> 27797 bytes homelab-ai-bot/telegram_bot.py | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/homelab-ai-bot/__pycache__/llm.cpython-311.pyc b/homelab-ai-bot/__pycache__/llm.cpython-311.pyc index e5b08147e9b7a5f30cd65c254f7ae8eec82307d2..f005230de8d5342c80efa184917eb38d73c6a53c 100644 GIT binary patch delta 2126 zcmai#Yitx%6vuaVx7){d0kHx43Mfd#*{IH$9#Ln|L?cnch2ng zEk=kSg4z+Z#f-@dWvcZWL{4f^lAx=F{2s3SvPk@i%|0dRaa9Yi>V0V4&9*KnNW4Z=cEd(j-(!=1d=nY zP(ybL(JLNnGagxqM&*_yB)p zpKRFXC~1bf%W9%yb{c^h38GPUr*Xy{tiy97aZQa7ouYC)H%W9fw&`}aFc1h#LuJaR-|9yRO#JR;)&+$EDu2314@tnU@)6L%z;7GpNlR5BLb z#vO{@Lk|mSdiJ-brb5?FOzmP-?Otg&>u6877!*-)9 zU}b?jZKwnhcoY&ApaVTxRpq(9Mvx0A_((Anju-gRSnDA-)3aWrM*f z(kk|4(C1nSMTY$utQ6ZU3ssCW%X0+USAjHJ8k*!j2=Nebo*5zUxcv|h0Ju%`Ep{|C z#hrj?^$oiis*+BzyP<~s<3g)X7GMjzCbGx6a?6Hq{1{PJxlc9XGR~&c>%yloYjhnL zBkg1ltexaOig>RB&DptY*GV2ER^({SJo6d6=SY=pbOWirFQnFgy*s3uJ-!fcJq9fDenoGr%Xn5bzOjj`ehx44B0! zvWjya>Q8~sfPKJy6~XXxpau8>_zL(MFe|wh5sa-m%hL>QuuY?%>1emqI49QH%6-ZZsYXAp+1`e@eUr=PfZ5zP_+ql~kvTM|{b|mUZexlKp#}dD$E?t^kQla;o6;VB= zXmY4L#AP*39$!&vlUOm4Sm|>)*cz%WtzeV1qqLGW({O1={yO30>w!lE45vV0;d6Wq zEbVlu>_JjXv#74DK+NA(*7!f>`^vKDjy*rUyw}%)K#wA{1EHJj$X2?<_1&f-#q_YE z@owR{PJ`uV#4}bckFXVVdU@%x$FPWDQF2YTq-&ZSlOes(3MureG~?n{B1?0nvkQ;x#xQY6CA*+0QPvGm`(*2(MVgX8|UJO z6L;FyvWNcdR-co%3cJN(yiNSh?c475)oceHZLiF27G9r&cOl3IXeSRtx6#e^2gH52 z+g`<@R1#=-7&Awim8z*R)wI(Ww9;h5Pz_U#n(>BvoUV1WcwU1X1ddTb=MuJsT10I&!?2fj zbr!P-o#-sev}H!Sn0W$n2(X*#Eh_9<;!!c~1wz!(Rl?5E zo-RK-OXs^vymn0&ikeD$RWmB#GzPcC+*OIGu9FMdAv)Bv*z*P!p8;wU7kWZ01F00* z=z}Rt1-+F6F9~V6!-^@Z+KlICxDNwI0QAFcH`FN53!vuw9ROJlax@A*4cN_L_r*C3 z&jarQ7l4bvd%*j^2Ls?G;3MEN@FDQA!1@E(-Krt3U-|3{kgQQovPNT=`zi1la2%Lb z7z{rL?7Dpc^(AlxKtTh18zinf{|fjT_y&jw`11KJ=%0XDMZ^$~wo-TPR``BC4#QO% zk}EdODdl(Y%&H`Y*8sZ(zK62&^aIp&;0Ev`FbND(Zm3u^ep4tX^*3P{PdpyVOD#ge zgB^E5pYQR5LlKtqw$9Y}|j7E#QAFe^OS(a#7Ye-^MC)=t6} z47USzdiFzo3v2>{z(y*FZXGx#q#f~I-#rZ%()HiHv7Bn$wEyjS6b}4RTdt63Q_B@r z`^@BRItdrLmg8i}*IF|a+IxC_y?EX1)|5v6w-_?cap4 diff --git a/homelab-ai-bot/telegram_bot.py b/homelab-ai-bot/telegram_bot.py index 1762d56ef..5dc0e3cb2 100644 --- a/homelab-ai-bot/telegram_bot.py +++ b/homelab-ai-bot/telegram_bot.py @@ -973,12 +973,29 @@ def main(): except Exception: log.exception("Fehler im Filmtipp-Loop") + async def _forecast_loop(application): + """Fallback: asyncio-basierter täglicher Forecast (08:00 Uhr).""" + while True: + now = datetime.now() + target = now.replace(hour=8, minute=0, second=0, microsecond=0) + if now >= target: + from datetime import timedelta + target += timedelta(days=1) + wait_secs = (target - now).total_seconds() + log.info("Forecast-Loop: nächster Run in %.0f Sek (%s)", wait_secs, target) + await asyncio.sleep(wait_secs) + try: + await _send_daily_forecast(application) + except Exception: + log.exception("Fehler im Forecast-Loop") + async def post_init(application): await application.bot.set_my_commands(BOT_COMMANDS) log.info("Kommandomenü registriert") asyncio.create_task(_watchdog_loop()) if application.job_queue is None: asyncio.create_task(_filmtipp_loop(application)) + asyncio.create_task(_forecast_loop(application)) _sd_notify("READY=1") log.info("Systemd Watchdog aktiv (50s Intervall)")