我有一个render()
函数,它不使用延迟,因为直接返回响应会更快。我不想直接返回字节串,而是先将其写入请求对象,手动完成,然后返回。重要的是我能够在第二个代码片段中使用return语句。
def render(self, request)
return b"not authorized"
应成为(如果可以的话)
def render(self, request)
request.write(b"not authorized")
request.finish()
return NOT_DONE_YET
我注意到当我返回NOT_DONE_YET
以外的任何内容时,我得到exceptions.RuntimeError: Request.write called on a request after Request.finish was called.
有效的examples使用了非常相似的序列:
request.redirect(...)
request.finish()
return NOT_DONE_YET
那么,使用write
/ finished
/ NOT_DONE_YET
的组合是否可以?
答案 0 :(得分:0)
好的,根据a docstring in Twisted's source code,
render_METHOD方法应该返回一个字节字符串 渲染页面,除非返回值为C {server.NOT_DONE_YET},in 在哪种情况下,这个班级有责任使用编写结果 C {request.write(data)}然后调用C {request.finish()}。