jab*_*jab 5 python http twisted
我是Twisted的新手,我遇到了一些必要的子类,因为static.File是扭曲的.我正在尝试在子类中设置请求标头.
class ResponseFile(static.File):
def render_GET(self, request):
request.setHeader('Content-Disposition', ['attachment ; filename="tick_db_export.csv"'])
static.File.render_GET(self, request)
if __name__ == "__main__":
from twisted.internet import reactor
root = ResponseFile('WebFolder')
testHandler = TestHandler()
root.putChild('main', testHandler)
reactor.listenTCP(3650, server.Site(root))
reactor.run()
Run Code Online (Sandbox Code Playgroud)
代码的第一位是子类定义本身(非常简单),而第二位是我的代码的初始化部分(这不是我的所有代码).我还有一个resource.Resource对象的子类,名为TestHandler.WebFolder是另一个包含许多静态文件的文件夹.
但是,在调用服务器时,我得到了大多数这类异常.
Unhandled Error
Traceback (most recent call last):
Failure: exceptions.RuntimeError: Producer was not unregistered for /
Run Code Online (Sandbox Code Playgroud)
除了root之外还有许多不同的路径.
您的代码中的问题出在render_GET方法中。它什么也不返回。基本上它必须返回同步响应的字符串和NOT_DONE_YET异步响应的值。在您的情况下render_GET返回None(并且您的连接立即关闭)。
因此,您必须对您的内容进行较小的更改render_GET(添加适当的return):
def render_GET(self, request):
request.setHeader('Content-Disposition', ['attachment ; filename="tick_db_export.csv"'])
return static.File.render_GET(self, request)
Run Code Online (Sandbox Code Playgroud)
如果您检查twisted.web.static.py模块,您会发现File.render_GET创建生产者并返回NOT_DONE_YET,这使得连接保持直到它没有显式关闭(在我们的例子中,在文件下载之后)。
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |