[ZILANT] убрать зацикливание запроса на вебхук
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
+6
-22
@@ -1,26 +1,10 @@
|
||||
import fcntl
|
||||
import os
|
||||
from tg_mainbot import app
|
||||
|
||||
from tg_mainbot import app, setup_webhook
|
||||
|
||||
|
||||
def _setup_webhook_once():
|
||||
"""
|
||||
Регистрируем webhook один раз при старте gunicorn.
|
||||
Без этого (__main__ не вызывается) Telegram не шлёт апдейты через relay —
|
||||
ссылка «Подписка» (/start) молчит.
|
||||
"""
|
||||
lock_path = os.path.join(os.getenv("TMPDIR", "/tmp"), "zilant_webhook_setup.lock")
|
||||
with open(lock_path, "w") as lock_file:
|
||||
try:
|
||||
fcntl.flock(lock_file.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||
except BlockingIOError:
|
||||
# Другой воркер уже ставит webhook
|
||||
return
|
||||
setup_webhook()
|
||||
|
||||
|
||||
_setup_webhook_once()
|
||||
# Регистрация webhook — в gunicorn_bot.conf.py (on_starting), один раз в master.
|
||||
# Здесь только WSGI-приложение для воркеров.
|
||||
|
||||
if __name__ == "__main__":
|
||||
from tg_mainbot import setup_webhook
|
||||
|
||||
setup_webhook()
|
||||
app.run()
|
||||
|
||||
Reference in New Issue
Block a user