【问题标题】:Twisted: returning from a blocking requestTwisted:从阻塞请求返回
【发布时间】:2016-10-24 17:14:12
【问题描述】:

我有一个不使用延迟的render() 函数,因为直接返回响应更快。我不想直接返回一个字节串,而是先写到请求对象中,手动敲定,然后返回。重要的是我能够在第二个代码 sn-p 中使用 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的组合可以吗?

【问题讨论】:

    标签: python request twisted


    【解决方案1】:

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

    render_METHOD 方法应该返回一个字节字符串,它将是 呈现的页面,除非返回值为 C{server.NOT_DONE_YET},在 在这种情况下,这个类负责使用 C{request.write(data)} 然后调用 C{request.finish()}。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2011-01-18
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      相关资源
      最近更新 更多