Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 控制/延迟发送201状态_Python_Rest_Http_Twisted - Fatal编程技术网

Python 控制/延迟发送201状态

Python 控制/延迟发送201状态,python,rest,http,twisted,Python,Rest,Http,Twisted,我的控制器代码(用python实现)首先更新数据库,然后发送201个状态代码,指示它在数据库中完成了更新。 问题是,等待从DB获取此更新的人将无法立即工作,因为DB更新需要一些时间(大约0.5秒)才能生效 有什么方法可以控制/延迟发送201吗? 任何示例代码/链接都将不胜感激。我可以建议两个选项,这两个选项都要求您的代码“等待”,直到确定数据现在可以检索为止 第一个选项是使用time.sleep()。如果确定知道数据库更新需要多长时间,可以硬编码静态等待时间 time.sleep(0.5) #

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

有什么方法可以控制/延迟发送201吗?
任何示例代码/链接都将不胜感激。

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

第一个选项是使用
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

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

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