如何解决Azure - Laravel - 作业在成功结束后重新启动
我对一项特定作业有疑问,该作业在 Azure 上运行两次。在作业结束时为所有用户(大约 200 个用户,也通过不同的作业)创建电子邮件通知。问题是,所有用户都收到两次相同的电子邮件。我做了一些研究,发现了以下内容。假设 Job 是在 9:12 开始的。
- 9:12 - 9:22 - 工作 - 第一次尝试
- 9:22 - 9:31 - 工作 - 第二次尝试
- 9:31 - 作业表充满了第一次尝试的 SendMail 作业
- 9:31 - 9:36 - 第一次尝试的电子邮件开始发送(每个邮件之间手动延迟 3 秒)
- 9:36 - 9:39 - 工作表清晰
- 9:39 - 作业表充满了第二次尝试的 SendMail 作业
- 9:39 - 9:44 - 开始发送第二次尝试的电子邮件(每个电子邮件之间手动延迟 3 秒)
这里列出了一些有关设置的信息:
- 电子邮件发送是整个工作的最后一件事,电子邮件在两轮中都成功发送给所有用户。
- 作业侦听器任务被设置为 artisan queue:work --timeout 600,所以我认为,两个 attem 之间的问题是 10 分钟。
- 作业侦听器已更改为 --timeout 1800,但 10 分钟后仍会触发第二次尝试。
- 每个作业都设置为最大值。 5 次尝试
- Azure 侦听器作业连续运行
- 在具有精确数据库副本的本地上,第一次尝试时作业已完成,并且只生成一轮电子邮件
- 在作业中,使用记录的请求(作业的调用者)信息制作日志 - 日志也创建了两次,内容完全相同,只是 created_at 不同(9:12 vs 9:22)但方法调用在他们都在 9:12。
我在第一轮电子邮件发送后找到了缓存密钥的解决方法,如果密钥存在则禁止第二个循环,但我喜欢找到这个问题的根源。你有什么建议吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。