【发布时间】:2019-03-25 02:08:39
【问题描述】:
我正在编写一些应用程序。我正在使用带有标准请求框架的 Python 2.7。 基本上,该应用程序只是一个简单的客户端,它向某个 www.example.com/goals/1 服务器请求 GET 方法。起初,我的代码看起来像这样:
import sys
import requests
def talker():
resp = requests.get("http://www.example.com/goals/1")
jdata = resp.json()
print jdata
if __name__ == '__main__':
talker()
它没有任何问题。但现在我想不断收听任何新的 POST 方法,以便尽快检索。所以考虑在某个 x 时间,服务器在 www.example.com/goals/2 上传了一条新的 json 消息。我必须通过更改 url 末尾的数字来再次运行代码。我可以运行一个永远不会结束的 while 循环,并简单地继续发送具有递增编号的请求,直到来自服务器的响应不是 200 而不是 404,但我认为这将是一个糟糕的选择,并且可能会让服务器筋疲力尽。
所以我的问题是,如何持续监听来自服务器的新 POST 请求并在新的 POST 消息上请求 GET 方法?
【问题讨论】:
-
“监听来自服务器的新 POST 请求”是服务器所做的,在客户端没有办法做到这一点。如果要枚举现有资源,请实现服务器端 API 以列出它们。
-
简短的回答是你不能。如果你控制服务器,你有很多选择:你可以提供一个端点来返回可用资源列表(你可以轮询),或者向你广播/推送新数据(这需要你运行一个服务器来接收它),但没有什么神奇的方法可以知道服务器已收到请求。
-
@JimStewart 如果我通过发送新请求不断等待新的 POST 直到我得到 200 而不是 404 怎么办?
标签: python python-2.7 python-requests