扭曲:从阻止请求返回

时间:2016-10-24 17:14:13

标签: python request twisted

我有一个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的组合是否可以?

1 个答案:

答案 0 :(得分:0)

好的,根据a docstring in Twisted's source code

  

render_METHOD方法应该返回一个字节字符串   渲染页面,除非返回值为C {server.NOT_DONE_YET},in   在哪种情况下,这个班级有责任使用编写结果   C {request.write(data)}然后调用C {request.finish()}。