SQLAlchemy 定时行更改可能吗?

SQAlchemy timed row changes possible?

我有一个数据库模型:

class Alerts(db.Model):
    __tablename__ = 'Alerts'
    id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
    alert_text = db.Column(db.String(1000), nullable=True, unique=False, index=True)
    alert_timeframe = db.Column(db.Integer, primary_key=False, unique=False, index=True)
    active = db.Column(db.Boolean, unique=False, index=False, nullable=True, default=False)

假设收到一条与 alert_text 匹配的新消息。这将触发警报 active 行更改为 True。我需要做的是在收到 active 行后将其标记为 True,一旦 alert_timeframe 过期将其设置回 False

我想知道或者实际上希望有一种方法可以用 SQAlchemy 做到这一点,例如,当将 active 设置为 True 时,使其成为自动恢复的定时更改。

如果用 SQLAlchemy 做不到,那么最好的方法是什么?最有效的方法是创建一个每次都会调用的函数并跟踪经过的时间吗?这很容易做到,但似乎效率很低,我不确定如果有多个用户和重叠的消息,它的效果如何。

欢迎和赞赏任何想法!

您可以使用 APScheduler 将作业安排到 运行 在特定日期。 使用 python 日期时间库获取当前日期时间,添加 10 分钟的时间增量,然后使用该新日期将您的功能安排到 运行 10 分钟后。

https://apscheduler.readthedocs.io/en/v2.1.2/dateschedule.html

job = sched.add_date_job(my_job, datetime(2009, 11, 6, 16, 30, 5), ['text'])