【问题标题】:What is proper workflow for insuring "transactional procedures" in case of exceptions在例外情况下确保“交易程序”的正确工作流程是什么
【发布时间】:2016-10-16 09:33:23
【问题描述】:

在编写 Web 应用程序时,尤其是 Django,有时我们有一组动作必须全部成功或全部失败(以确保某种可预测的状态)。现在很明显,当我们使用数据库时,我们可以使用事务。

但在某些情况下,在数据库上下文之外需要这些(全部或全部)约束

(例如,如果付款成功,我们必须发送产品激活码,否则可能会有客户投诉等风险)

但是让我们说在某个决定性的日子里,send_code() 函数由于一些临时的网络错误(持续了 1 个多小时)而一次又一次地失败

我是否应该记录错误并手动修复问题,例如手动发送邮件

我应该设置某种工作队列,当事情失败时,他们只是回到队列的末尾以供将来重试?

如果日志记录/排队系统也出现故障怎么办? (我现在是不是太担心了?)

【问题讨论】:

    标签: python django exception transactions


    【解决方案1】:

    我们在公司中使用微服务,至少每月一次,我们的其中一个微服务会停机一段时间。我们有Transaction 模型用于支付流程和我们向用户发送产品之前的每一步的状态。如果出现问题或连接的微服务之一出现故障,我们将其标记为status=error 并保存到数据库中。然后我们使用 cron 作业来查找并完成这些进程。您需要一开始就尝试一些东西,如果不符合您的需要,请尝试其他东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-28
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多