import fcntl import os 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() if __name__ == "__main__": app.run()