这是我的第一个问题,如果它不是最好的质量,我深表歉意。
我有一个用例:用户创建一个监控任务,该任务每 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/