我可以向TelegramAPI发送多少请求

2024-04-23 17:57:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,我目前正在编写,它涉及到接收来自telegramapi的更新,然后用python请求模块向其发送响应

现在,我正在线程中使用while True:循环不断地从telegram api获取更新。我的问题是,我不确定使用while True:循环是否会导致http-requests超时或电报服务器端的压力。如果是这样,我想知道一个更好的方法来处理这个问题。我已经测试了我的机器人和它的工作后,多次运行良好。你知道吗

我基于python-telegram-bot包编写了这段代码,我假设它也使用threadingrequests来获取更新。你知道吗

我知道webhooks的存在,我希望从中得到一个不同的答案。你知道吗

也就是说,一个post和一个get方法在网站服务器上是否真的有不同的应变(可能是我收到http-requests超时)?你知道吗

提前谢谢


Tags: 模块方法代码apitruehttp服务器端机器人
1条回答
网友
1楼 · 发布于 2024-04-23 17:57:39

相对于GET请求,POST请求对服务器施加的压力大小取决于服务器和请求—它到底在做什么,以及您发送了多少信息。一般来说,我希望POST请求消耗更多的带宽和内存,因为它通常涉及创建和插入一个对象,而不是简单地获取一个查找,但这并不是任何API的硬性规定,而且几乎可以肯定的是,在某些情况下,情况恰恰相反。你知道吗

在这种情况下,获得超时的唯一方法是服务器太忙而无法处理您的请求。如果您只在一个线程中执行,那么您的代码一次不应该发送多个请求,因此我认为除非其他用户也在做同样的事情,否则这是不可能的。你知道吗

也就是说,您真的不应该在没有缓冲的while True循环中执行HTTP请求。当前(假设您的代码是单线程的),它发送一个请求,一旦收到响应,它立即发送另一个请求。虽然这种行为不会使服务器过载(它只是意味着在任何给定的时间,您的代码几乎总是有一个请求发送到服务器),但它对服务器和您的计算机的工作都比它可能需要的多。老实说,对你的电脑来说可能比服务器更糟。你知道吗

如果可能,您应该将messagesender()方法与程序其余部分的行为挂钩,这样您就永远不会发送响应,除非您确实需要。如果不能做到这一点,可以让它以合理的间隔(每秒4或5次)在重复的threading.Timer上激活而不是使用while True来持续运行。或者,如果你不能让任何一个工作,time.sleep()总是一个选择,如果一个笨拙的。你知道吗

相关问题 更多 >