【发布时间】:2020-08-20 13:56:38
【问题描述】:
我正在调查一个问题,我已将其范围缩小到以下格式的方法中的一个位置:
def method_shorthand(properties):
some stuff
some more stuff
return transaction.on_commit(
lambda: external_function_call_I_do_not_control(properties))
)
对于我可以重现的特定问题案例,external_function_call_I_do_not_control(触发 Segment 事件)不会发生/成功,尽管直到那时我已经确定所有信息都是正确的。对于这个代码库,'ATOMIC_REQUESTS':是的,所以我预测:
- 提交实际上并没有发生(似乎不太可能;此函数被称为成功之前的代码块的最后一步)
- 提交发生或没有活动事务(在这种情况下,它只是执行),但是当这个函数调用发生时,它会以某种方式出错 - 我的钱在这个上
所以我想在这个外部函数行中添加某种 try/catch 块,这样如果它运行时出现异常,我可以捕获它,记录信息,看看是怎么回事,这样我就可以修理它。问题是它都在 return transaction.on_commit 中,所以我尝试的所有内容似乎都是错误的语法,环顾四周我找不到这样做的例子。
有没有一种安全的方法可以在这个 return transaction.on_commit 中添加一个 try/catch 块?由于实际的函数调用是外部的并且我无法更改用于日志记录/调试的代码,因此还有其他想法可以在那里进行故障排除吗?
【问题讨论】:
标签: python transactions return try-catch