You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Azure Web App Service托管的Telegram Bot启用长连接

解决Azure Web App上Telegram Bot闲置后停止响应的问题

嘿,这个问题我之前帮朋友处理过!你遇到的核心问题其实是Azure Web App免费层的自动休眠机制——当你的Web App连续20分钟左右没有收到任何外部请求时,平台会自动关闭应用实例来节省服务器资源,这时候你的Telegram Bot就会停止运行;而手动刷新链接本质上是触发了实例重启,所以Bot又能恢复响应。

下面给你几个实用的解决方案,按优先级排序:

1. 开启Web App的「始终开启」功能

这是最直接有效的办法,步骤很简单:

  • 登录Azure门户,找到你的目标Web App服务
  • 在左侧导航栏里选择「配置」>「常规设置」
  • 找到「始终开启」选项,把它从「关闭」切换为「开启」
  • 点击页面顶部的「保存」按钮,等待配置生效

划重点:这个功能在免费学生订阅里是完全可用的,对于Telegram Bot这类低负载应用来说,完全能满足需求,不会触发配额问题。

2. 设置定时Ping请求唤醒应用

如果「始终开启」偶尔出现失效(比如免费层资源调度的小波动),可以用定时任务定期向你的Web App发送请求,防止它进入休眠:

  • 你可以写个简单的脚本(比如Python或PowerShell),每隔15分钟向http://appname.azurewebsites.net发送一个GET请求
  • 也可以用Azure自带的「逻辑应用(Logic Apps)」创建一个定时触发器,每隔一段时间调用你的Web App URL
  • 还可以在Bot代码里加一个/health健康检查接口,返回200状态码,定时任务ping这个接口既能唤醒应用,还能顺便检查Bot的运行状态

3. 优化Bot的Webhook配置(辅助项)

如果你用的是Telegram Bot的Webhook模式,确保配置正确,让Telegram的请求能稳定触发你的应用:

  • 确认已经通过Telegram Bot API的setWebhook方法设置了正确的Webhook URL
  • 避免把Bot的逻辑只绑定在单次请求处理中,尽量用后台托管服务(比如.NET的Hosted Service)来运行Bot的核心逻辑,这样即使没有外部请求,Bot也能保持内部活跃(不过还是需要配合前面的方案防止Azure休眠)

额外小提醒

  • 免费层的Web App有每日运行时间配额,不过对于Telegram Bot这种非高频应用来说,基本不会用完
  • 如果之后Bot的使用量变大,免费层不够用了,可以考虑升级到基础层,那里的资源限制更少,休眠机制也可以更灵活配置

内容的提问来源于stack exchange,提问作者TheMelancholicMan

火山引擎 最新活动