微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

示例python twisted事件驱动的Web应用程序递增请求数量为2,为什么?

http://twistedmatrix.com/trac/给出的基本Web服务器的示例代码似乎为每个请求将请求计数器递增2,而不是1.

代码

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

class HelloResource(resource.Resource):
    isLeaf = True
    numberRequests = 0

    def render_GET(self,request):
        self.numberRequests += 1
        request.setHeader("content-type","text/plain")
        return "I am request #" + str(self.numberRequests) + "\n"

reactor.listenTCP(8080,server.Site(HelloResource()))
reactor.run()

看一下代码,看起来你应该能够连接到url http://localhost:8080并看到:

I am request #1

然后刷新页面并查看:

I am request #2

但是,我看到:

I am request #3

当我再次刷新时,我看到:

I am request #5

因此,从计数器判断,服务器似乎为每个请求调用两次函数“render_GET”.我使用Python 2.7在Windows 7上运行它.知道可能会发生什么或这是预期的行为吗?

更新:代码运行正常,这是一个棘手的浏览器.每次刷新页面时,浏览器都会发送一个“/”和“/favicon.ico”的GET请求,这会导致递增2,因为每次刷新时实际上都会调用render_GET函数两次.

解决方法

浏览器可以以令人惊讶的方式表现.如果您尝试打印完整的请求,您可能会发现它正在请求“/”以及“favicon.ico”.

原文地址:https://www.jb51.cc/python/241977.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐