如何在网站请求后发送电报信息?

How to send a telegram message after request on the website?

我的服务器上有一个 Flask 应用程序,在具有公共数据库的另一台服务器上还有一个用于该网站的 Telegram 机器人。我想在我的网站上发出某些请求后在 Telegram 中发送消息(用户提出请求,在此之前他们将 Telegram 帐户与网站帐户相关联)。这样做的正确方法是什么?我完全不知道。

如您所述,您在两台服务器之间使用了一个公共数据库。很多时候,消息队列用于类似这样的事情,通常使用 AMQP 协议。看看像 RabbitMQ 这样的东西,这是一个常见的实现。如果您有一个设置,其中 Flask 服务器推送请求以将消息发送到队列,并且 Telegram 机器人读取队列以检查新消息,那么您可以轻松地在服务器之间进行通信。我推荐这种方法。


另一种可能性是自己编写类似的东西,将您的数据库用作队列。将消息请求写入 table,每一行都有一个“已处理”布尔值,Telegram 机器人在发送消息后将其设置为 true。不过,这种方法有几个缺点:

  • 由于软删除,数据库上的许多更新和删除会增加数据库的 space 使用率;
  • 如果你要并发,你需要一种机制来防止服务器获取和处理同一行 - AMQP 为你做这件事;
  • AMQP 可以通过死信交换 (DLX) 处理失败的请求。如果 Telegram 的服务器出现故障或者某人无法访问怎么办,那么您是一遍又一遍地重试相同的操作还是将其搁置以备后用