我做了一个非常简单的web服务,比如:
class UploadResource(Resource):
def onSuccess(self, result):
self.request.write("OK")
def onError(self, result):
self.request.write("Error")
def render_POST(self, request):
request.data.save_to_disk()
d = request.mirror("http://mirror_replica/Upload")
d.addCallbacks(self.onSuccess, self.onError)
return server.NOT_DONE_YET
方法request.mirror()
返回在http客户端请求完成后将数据发送到同一web服务的另一个副本后触发回调的延迟
当我在一些成功的请求之后对一个副本运行一个简单的/Upload方法的压力测试时,我得到了一个read timeout客户端异常。 对于1000个成功的请求,我得到一个读取超时异常。 经过一些调试后,我发现有时onSuccess回调从未调用过,读超时也不是由重载引起的。在
因此,我将类代码重写为:
^{pr2}${/timeout现在总是被称为
问题是“为什么?”
如果您的
Deferred
没有被调用,则有人无法调用它。这可能是一个bug,也可能只是请求花费了很长时间。如果看不到mirror
方法的代码,就根本无法猜测。{如果你能诊断出一个很长的问题。在相关问题 更多 >
编程相关推荐