【问题标题】:Control/defer sending out 201 status控制/延迟发送 201 状态
【发布时间】:2015-06-23 17:19:56
【问题描述】:

我的控制器代码(在 python 中实现)首先更新 DB,然后发出 201 状态代码,表明它已在 DB 中完成更新。 问题是等待从数据库获取此更新的人不会立即工作,因为数据库更新需要一些时间(大约 0.5 秒)才能生效。

有没有办法可以控制/推迟发送 201? 任何示例代码/链接将不胜感激。

【问题讨论】:

  • 我们是否应该假设您正在使用 Twisted Web 构建一个 RESTful HTTP 服务器?我可以从您问题的标签中推断出这一点,但最好在问题本身中说明这一点。标签是人们找到您的问题的方式:您不应该将问题本身的解释依赖于它们。

标签: python rest http twisted


【解决方案1】:

我可以建议 2 个选项,这两个选项都需要您的代码“等待”,直到确定数据现在可以检索。

第一个选项是使用time.sleep()。如果您确定知道更新数据库需要多长时间,您可以硬编码静态等待时间

time.sleep(0.5) # 1/2 a second pause

这种方法的缺点是等待时间是硬编码的,所以如果更新时间比指定的等待时间长很多,你又会遇到同样的问题。

第二种选择是在while循环中写入数据库后立即查询写入的值,并仅在您成功时返回,读回您更新的值。

# Pseudocode
db.update(data)
while True:
    rdata = db.retrieve(id_for_data)
    if rdata.field == data.field:
        break
return response, http_code

这种方法的缺点是如果数据库更新需要一段时间(甚至失败),您可能会等待很长时间(或永远)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    相关资源
    最近更新 更多