我想将twisted.web模板一起使用twisted.web资源.
但我只是不明白,如何使它们一起工作.
我尝试使用,, flatten(request, MyElement(), request.write)但最终会抛出异常:Request.write called on a request after Request.finish was called.
有人能为我提供一个非常基本的例子,说明如何将这两个类一起使用?
听起来你忘了NOT_DONE_YET从你的render()方法回来,因此finish()立即被召唤.类似下面的内容应该在Twisted中的某个地方,以帮助解决这个问题:
from twisted.web.resource import Resource
from twisted.web.template import flatten
from twisted.web.server import NOT_DONE_YET
class ElementResource(Resource):
def __init__(self, element):
Resource.__init__(self)
self.element = element
def render_GET(self, request):
d = flatten(request, self.element, request.write)
def done(ignored):
request.finish()
return ignored
d.addBoth(done)
return NOT_DONE_YET
Run Code Online (Sandbox Code Playgroud)