Python MySQL选择查询循环

时间:2017-01-17 21:44:39

标签: python mysql

我正在尝试制作一个播音员,当一个新的条目进入表格时,该播音员会实际发送内容。

目前我注意到的唯一方法就是制作一个循环,每隔1秒询问一次选择查询并保存最新的查询ID,如果是新的。

我想让它快速,但每次都有1秒的查询有点慢下来。

还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

是的,更好的方法是使用消息队列。对客户端进行编码,以便在将新数据提交到数据库后,它们会发布到消息队列中。他们不必将完整数据发布到队列中,只是发出一个事件来表示应用程序检查数据的时间。

与此同时,您的播音员应用可以在队列中等待,直到有条目。因此,它不会轮询数据库,它只是阻塞,直到消息队列中出现某些内容。

有许多消息队列实现。例如:

但是上述要求您更改写入数据库的应用程序中的代码。如果您不能这样做,那么不需要更改应用程序的替代方法是使用Change Data Capture工具通过流式传输二进制日志来监视数据库中的更改。这是一篇关于以这种方式使用CDC工具的文章:MySQL CDC, Streaming Binary Logs and Asynchronous Triggers

有些人很想写一个MySQL触发器来通知播音员应用程序。 不要尝试这个。在事务提交之前触发。因此,您的播音员应用程序会在看到数据之前获得有关数据的通知。此外,事务可能会回滚,但无论如何都会发送通知,因此播音员会收到一个它永远无法读取的数据的错误报告。

由于后一个原因,如果您使用消息队列,则您的编写器应用程序必须在 之后将数据提交到数据库。