2012-03-27 85 views
1

我新来扭曲。为什么打印“render()”两次?我知道如果我返回server.NOT_DONE_YET,它只会打印一次,但我希望返回字符串/ JSON。任何帮助?为什么Twisted resource.Resource执行render()两次?

代码:

from twisted.web import resource, server 
from twisted.internet import reactor 
import simplejson 

class WResource(resource.Resource): 
    isLeaf=True 

    def __init__(self): 
     print "resource started" 

    def render(self, request): 
     print "render()" 
     request.setHeader('Content-Type', 'application/json') 
     return simplejson.dumps(dict(through_port=8080, subdomain='hello')) 

reactor.listenTCP(9000, server.Site(WResource())) 
reactor.run() 

输出:

> python server.py 
resource started 
render() 
render() 
+0

我使用2.6.6和扭曲的10.2.0进行了测试。它按预期工作(打印一次) – 2012-03-27 05:06:42

回答

2

因为你的网页浏览器所请求favicon.ico。如果您在render方法中打印request.postpath,则会看到只有其中一个请求触及您期望的页面。

+0

感谢:)你是正确的关于favicon.ico – 2012-03-27 05:06:02

+0

@MickeyCheong你正在使用哪个浏览器?我正在使用Firefox – 2012-03-27 05:28:24