Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Flask中创建webhook_Python_Flask - Fatal编程技术网

Python 在Flask中创建webhook

Python 在Flask中创建webhook,python,flask,Python,Flask,我有一个chrome扩展,从我访问的各种网页中获取数据,并将其存储到数据库(Python/Flask) 我还有一个可视化数据库的仪表板(使用react-create-app-node/react/redux) 我希望在每次添加/删除/修改数据库中的记录时自动更新仪表板 据我所知,这就是webhook的具体用途 我想做的是在数据库上创建一个“侦听器”,这样每次进行更改时,它都会向节点服务器发出请求 有几件事:1)如何创建“东西”来侦听数据库中的更改?2.)通常情况下,我的网页会启动一个web请求,

我有一个chrome扩展,从我访问的各种网页中获取数据,并将其存储到数据库(Python/Flask)

我还有一个可视化数据库的仪表板(使用react-create-app-node/react/redux)

我希望在每次添加/删除/修改数据库中的记录时自动更新仪表板

据我所知,这就是webhook的具体用途

我想做的是在数据库上创建一个“侦听器”,这样每次进行更改时,它都会向节点服务器发出请求


有几件事:1)如何创建“东西”来侦听数据库中的更改?2.)通常情况下,我的网页会启动一个web请求,并侦听回拨中的数据。我如何构造它,使它只“侦听”新的更新

我觉得这就是你想要的:

+- Browser --------+    +---- Browser ---------------+
| Chrome extension |    |    React dashboard         |
+---+--------------+    +-+----+----------------+----+
    |                     |    ^                |
    |                     |    |                |
[C] +         [B]+--------+    |            [A] |
   POST       open a           |  [D]          GET
  (http)      websocket     send websocket    (http)
    |            |      +---message             |
    v            |      |                       v
+-- Server A +---------------+     + Server B --+----+
|                v      |    |     |                 |
| +--------------+------+-+  |     |  +-----------+  |
| | Flask                 |  |     |  |  Node     |  |
| +-----------------------+  |     |  | (hosting  |  |
| +-----------------------+  |     |  |   React)  |  |
| | DB                    |  |     |  +-----------+  |
| +-----------------------+  |     |                 |
+----------------------------+     +-----------------+
  • [A]从web浏览器中,从节点服务器加载React仪表板
  • [B]您的react应用程序在初始化时会打开到python服务器的websocket连接。websocket允许浏览器客户端和服务器之间进行双向通信-请参阅下面的详细信息
  • [C]一段时间后,在浏览器中,您的chrome扩展向python服务器发出http调用,更新数据库
  • [D]python服务器在更新数据库后,使用已建立的websocket连接向react应用程序发送websocket消息。然后,您的react应用程序使用通过websocket发送的最新数据更新仪表板
网袋 是一种允许服务器和浏览器客户端之间进行双向通信的协议

您需要:
  • 更新react应用程序,使其创建websocket连接并侦听更新消息,但我以前从未用过
  • 更新python服务器以接受websocket连接,并为每次更新发送websocket消息。-几年前我在学校的一个项目中用过这个,它成功了
    顺便说一句:这不需要两台服务器。您的节点服务器可以处理数据库保存,或者您的python/flask服务器可以为React应用程序提供服务

    当您在处理CRUD更改的flask应用程序中收到每个请求时,都从节点服务器请求页面时,您有效地创建了一个web钩子(一个服务器请求或发布另一个服务器)。您可能希望将其卸载到后台线程或作业系统,如Beanstalk。为您提供异步webhook调用。如果您希望监视的页面也能更新,您可能会对web套接字感兴趣。

    您所说的“存储到数据库(python/Flask)”是什么意思?Flask是一个web框架,它不存储任何内容。数据具体存储在哪里?在文件中?MySQL?Mongo?听起来您希望服务器在数据模型发生变化时更新客户端。是这样吗?典型的Webhook指的是不同的东西,其中一台服务器向另一台服务器发送http post,以通知数据模型中的更改。Django有一种称为
    信号的东西,我认为Flask也有一个类似的东西——看看这个:当你在Flask应用程序中收到的每一个处理CRUD更改的请求中从节点服务器请求一个页面时,你有效地创建了一个web钩子(一个服务器请求或发布另一个服务器)。您可能希望将其卸载到后台线程或作业系统,如Beanstalk。为您提供异步webhook调用。如果你想让你监视的页面也更新,你可能会对web套接字感兴趣。@lee pai long yea,我正在使用SQL alchemy将其存储到mysql数据库中,抱歉,假设有人会理解这个主题,但是@alexanderbird,你是否使用了特定的应用程序来创建架构?如果是这样,我希望有一个链接:)