gpt4 book ai didi

python-3.x - 安排任务在未来某个时间点运行(架构)

转载 作者:行者123 更新时间:2023-12-03 16:04:50 24 4
gpt4 key购买 nike

因此,我们有一个运行的 Python flask 应用程序,它使用 Celery 和 AWS SQS 来满足我们的异步任务需求。

我们最近遇到的一个棘手问题是创建一个在 x 天或 3 小时内运行的任务。对于这样的东西,我们有很多需求。

现在我们在数据库中创建事件,并带有时间戳,这些时间戳存储事件应该被触发的时间。然后,我们利用celery beat每秒运行一个定时任务,检查是否有事件需要处理(根据触发时间戳),然后处理。但是,这会每秒查询一次数据库,以查找我们认为可以以某种方式改进的事件。

我们研究了在 celery ( http://docs.celeryproject.org/en/latest/userguide/calling.html ) 中使用 eta 参数,它可以让您安排任务在 x 时间内运行。然而,拥有较大的 etas 似乎是一种不好的做法,而且 AWS SQS 的可见性超时大约为两个小时,因此超过这个时间的任何事情都会导致冲突。

我现在很头疼。一方面有这个工作,而且相当不错,因为已经用 SNS、SQS 等将事物分开,以确保缩放容差。但是,每秒查询一次数据库以处理要处理的事件并没有什么感觉。当然,Google/AWS 提供了更简单的方法或服务来安排某些事件(发布/订阅)在未来某个时间(x 小时、分钟等)发生

有什么想法吗?

最佳答案

您是否看过 AWS Step Functions,特别是 Wait State ?您可以将几个 lambda 函数放在一起,第一个返回时间戳或等待 Wait State 的秒数。最后一个在 Wait 返回后将消息添加到 SQS。

关于python-3.x - 安排任务在未来某个时间点运行(架构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50661411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com