python - 在 Amazon Web Services 上创建 cron 作业的可扩展方式是什么?

标签 python django amazon-web-services aws-lambda amazon-cloudwatch

这是我的第一个问题,如果它不是最好的质量,我深表歉意。

我有一个用例:用户创建一个监控任务,该任务每 X 小时向网站发送一个 http 请求。用户可以拥有数千个这样的任务,并且可以添加/修改和删除它们。当用户创建任务时,django 信号会创建一个 Celery 周期性任务,然后该任务定期运行。

我正在寻找使用 AWS 的更具可扩展性的解决方案。我读过有关使用 Lambda + Cloudwatch Events 的内容。

我的问题是:如何让我的用户以最便宜/最可扩展的方式创建数以万计的此类任务?

感谢您阅读我的问题! 彼得

最佳答案

您的问题没有直接的解决方案。您必须一步一步地进行一些管道操作。

事件管理

1- 创建一个 lambda 函数来创建 cloudwatch 计划。

2 - 创建一个删除 cloudwatch 计划的 lambda 函数。

3 - 保留使用 dynamodb 创建的任何事件

4 - 创建 2 个 API 网关来调用上面的 2 个 lambda。

5 - 创建另一个 lambda 函数(由 cloudwatch 使用)来调用下面的 API 网关。

6 - 创建将通过 http 请求调用网站的 API 网关。

当用户从应用程序创建事件时,将会出现如下链接调用:

4 -> 1,3 -> 5-> 6

现在还有两个其他参数需要考虑:

Lambda 并发性:同一区域内不能同时运行超过 1000 个 Lambda。

Cloudwatch:每个区域创建的规则不能超过 100 条。规则是您定义时间表的地方。

关于python - 在 Amazon Web Services 上创建 cron 作业的可扩展方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413651/

相关文章:

python - 对多个文档进行排序/比较的最佳方法?

python - 我正在进行分层分割并出现越界错误,我不明白为什么

python - Django 模板中突出显示的帖子

amazon-web-services - 如何向 Sagemaker 端点添加运行状况检查?

amazon-web-services - 手动设置 AWS Cognito 访问 token 超时

python - 在没有 pd.pivot 的情况下从长到宽转换 Pandas 数据框

Python:无符号 32 位按位算术

python - Django,动态 urlconfs,线程安全

python - Django Crispy Forms 类型错误 : __init__() got an unexpected keyword argument 'instance'

amazon-web-services - 如何使用 IAM 角色假设通过 AWS CLI 运行 aws-nuke