我的控制器代码(在python中实现)首先更新DB,然后发出201状态代码,表明它已在DB中完成更新。 问题是有人等待从DB获取此更新将无法立即工作,因为DB更新需要一些时间(约0.5秒)才能生效。
有没有办法可以控制/推迟发送201? 任何示例代码/链接将不胜感激。
答案 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更新需要一段时间(甚至失败),您可能会等待很长时间(或永远)