gpt4 book ai didi

python - 确保外部 API 结果的连接和响应的最佳实践

转载 作者:太空宇宙 更新时间:2023-11-03 20:07:28 24 4
gpt4 key购买 nike

我在 python 中有这段代码(使用 django 框架),它连接到外部 API 并更新该服务中的一些值。每个步骤都取决于上一步(要使步骤 2 正常工作,步骤 1 必须返回 True 等等,其中包括与 API 的有效连接)。我如何确保所有这些步骤同时发生,如果单个步骤失败,我如何在另一次尝试中回滚并立即运行所有这些步骤。这是代码。请注意,每个类方法都会在该外部服务中执行某些操作。

# 1. add new value to account
if cls.add_balance(subscription_code, increase_amount):
# 2. set new base balance
if cls.set_topup_reset_action(
subscription_code,
new_base_balance,
):
# 3. renew filters
new_base_balance_20_percent = math.floor((Decimal(
new_base_balance) * Decimal(20)) / Decimal(100))
if cls.set_filter_80_percent(
subscription_code,
new_base_balance_20_percent,
) and cls.set_filter_100_percent(
subscription_code,
):
# 4. renew thresholds
if cls.set_threshold_profile_80_percent(
subscription_code,
) and cls.set_threshold_profile_100_percent(
subscription_code,
):
return True
return False

最佳答案

为了保证事务的原子性,在开始执行原子 block 之前应该存储数据的状态。如果发生故障,我们必须将数据恢复到相同的状态。

在这种情况下,请在开始 4 个步骤之前检查是否可以使用外部 api 来获取现有值。如果有一项规定可以将其重置回来。然后临时存储这些值,并在其中一个步骤失败时恢复。

或者尝试推断调用外部 api 时发生的更改,以及是否可以通过其他方式恢复它。由于外部 API 是一个黑匣子,每一步都会调用,因此无法确保事务的原子性。

如果四个步骤都调用同一个api,则在一次事务中计算外部api调用的所有参数,并且仅调用一次api。

关于python - 确保外部 API 结果的连接和响应的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58897904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com