所以我有三个数据库,它们都有一些不同日期的数据。我想在每个月的特定日期发送通知。
我正在考虑创建一个每天运行的 cron,它每天都会查询表,如果表中的日期与今天的日期匹配,那么它将发送通知
我不确定这是否是有效的方法。
所以我有三个数据库,它们都有一些不同日期的数据。我想在每个月的特定日期发送通知。
我正在考虑创建一个每天运行的 cron,它每天都会查询表,如果表中的日期与今天的日期匹配,那么它将发送通知
我不确定这是否是有效的方法。
您对“每天查询表格,如果表格中的日期与今天的日期匹配,那么它将发送通知”的描述是准确的。
主要选择是您希望在 Amazon EC2 实例上还是使用 AWS Lambda 上执行此操作。
您似乎希望每天发送一次通知。如果是这样,那么您可以每天激活一次 Amazon EC2 实例,完成必要的工作,然后停止该实例。这样,您只需为实例实际工作的时间付费:
StartInstance()命令来激活 EC2 实例有关配置的详细信息,请参阅:EC2 实例完成任务时自动停止 - DEV 社区
这种方法的好处是没有时间限制。Amazon EC2 实例如果每天只运行一次,成本相当低。
AWS Lambda 函数可以执行相同的任务,但最长运行时间限制为 15 分钟。如果日常任务可能需要超过 15 分钟,则可以进一步细分:
听起来您已经有一个数据库。我会推荐以下流程:
last_notification(见下文)在所需的通知日期之前last_notification设置为NOW()这样,如果脚本不是每天都运行,或者出现错误,系统就会知道需要通知哪些用户。这比假设脚本每天都能成功运行要好。
如果您的功能实际上需要在特定时间(不仅仅是特定日期)发出通知,则脚本需要每天运行一次以上。
我假设您的“数据库”实际上是结构化文件,而不是真正的数据库。(您不解析真正的数据库。)
我还假设它们很大。即数万条或更多记录。)如果它们很小,那么解析文件的开销太小而无需担心。
基于这些假设,最有效的方法(就处理时间而言)是将数据保存在真实数据库中,并使用数据库查询来提取与每一天相关的数据。
另一方面,如果数据库不够大,最好的方法是简单的方法......供您实施。