【问题标题】:Python Real-time Busy Polling a DatabasePython 实时忙轮询数据库
【发布时间】:2014-01-09 09:02:49
【问题描述】:

我有一个从第三方应用程序获取行/记录INSERTS 的数据库表。此表有一个标记为“活动”的列,当第三方应用程序插入每条新记录时,该列始终为 False

我的应用程序需要读取该数据库表上的行,并找到那些具有布尔值为False 的“活动”列的行,然后将该列更新为True(在对该行进行一些处理之后)。

最好的方法是什么?现在我只有一个简单的 while 循环,它重复查询数据库并处理该表。但我认为一定有更好的方法。

我的问题是:在 Python 中忙轮询数据库以便我的应用程序尽快注意到数据库更改的正确方法是什么?

【问题讨论】:

    标签: python database postgresql sqlalchemy


    【解决方案1】:

    我认为您应该考虑在数据库中做一个触发器,向您的应用程序触发脚本,而不是轮询数据库。

    这可能最好在PL/sh 的帮助下完成

    【讨论】:

    • 您也可以使用订阅者模式并让触发器发出 NOTIFY。代码会发出 LISTEN 然后循环等待通知(请参阅此处的异步通知部分 initd.org/psycopg/docs/advanced.html - sqlalchemy 允许您访问 psycopg 连接对象来执行此操作)。
    • 另外,根据您的用例,您可以在触发器中完成所有处理。
    猜你喜欢
    • 1970-01-01
    • 2012-11-18
    • 2011-05-11
    • 2013-03-07
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多