控制/推迟发送201状态

时间:2015-06-23 17:19:57

标签: python rest http twisted

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

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

1 个答案:

答案 0 :(得分:0)

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

第一种选择是使用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

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