是否可以在常规客户端上实施webhook?

时间:2014-09-11 21:48:05

标签: python sockets real-time long-polling webhooks

我正在尝试创建一个可以从Web服务器连续接收数据的python应用程序。这个python应用程序将在多台个人计算机上运行,​​每当有新数据可用时,它都会收到它。我意识到我可以通过长轮询或Web套接字来做到这一点,但问题是有时数据不会被传输数天,在这种情况下,长轮询或websockets似乎效率低下。我不需要那么长的连接,但只要有数据可用,我就需要将它推送到应用程序。我一直在阅读有关webhooks的内容,似乎如果我有一个url来发布这些数据,我就不需要进行民意调查了。但我对每个客户端如何拥有回调网址感到困惑,因为在这种情况下客户端必须充当服务器。有没有图书馆帮助完成这项工作?您可以指出的任何资源都非常有用!

2 个答案:

答案 0 :(得分:1)

backchoi32,

您想要做的是阅读REST architecture。从本质上讲,您的客户端将对特定资源执行POST请求,让我们调用资源clients。您的客户可以做的是向" /:cliend_id"执行GET请求。当发生这种情况时,您的后端可以继续将此信息保留在您的数据库中。

在python中有很多RESTful Web框架,一些流行的框架是DjangoFlask

Python日记中的这篇文章叫做" Creating a simple CRUD application"这张幻灯片共享名为" Basic CRUD in Django"将教你如何编写一个具有基本(C)reate(R)ead(U)pdate(D)elete功能的RESTful Web服务。

您在客户端需要担心的是确保您收到200 status code后退,这将向您的客户发出信号,表明它已成功执行了对您的后端服务的请求,并且如果您执行POST / PUT,则所有内容都会保留。如果它没有返回200,那么您可以添加功能来处理故障,冗余和容错。

如果您有任何疑问,请与我们联系!

答案 1 :(得分:0)

如果没有某种连接,就无法将数据发送到客户端,例如客户端完成的websockets或(长)轮询。虽然理论上可以在客户端上打开一个侦听器套接字并让Web服务器连接到该套接字并将数据发送到此套接字,但这实际上是行不通的。这个问题的主要原因是,客户端通常位于无法从外部访问的内部网络内,即典型的家庭设置,其中单个IP后面有多台计算机,或者中间有防火墙的公司设置。在这种情况下,只能建立从内到外的连接,而不是另一种方式。