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'])
我有一个数据库模型:
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'])