在twisted Site中构建协议机制

时间:2016-05-01 20:27:24

标签: twisted twisted.web twisted.internet

我试图了解如何以及何时为Site工厂中的http请求创建协议。虽然我对工厂和协议的工作有基本的了解,但我的困惑是因为我看到为浏览器的单个请求创建了多个协议。以下是示例代码和输出。

import sys
from twisted.web.server import Site
from twisted.web.static import File
from twisted.internet import reactor

from twisted.python import log
log.startLogging(sys.stdout)

class GFactory(Site):
    protmade = 0
    def __init__(self,resource):
        Site.__init__(self,resource)

    def buildProtocol(self, addr):
        GFactory.protmade +=1
        print "Building Protocol in factory" + str(GFactory.protmade)
        print addr        
        p = Site.buildProtocol(self, addr)
        return p


resource = File('./temp')
factory = GFactory(resource)
reactor.listenTCP(8888, factory)
reactor.run()

http://localhost:8888/到Chrome

的单个请求中记录
2016-05-02 01:38:07+0530 [-] Log opened.
2016-05-02 01:38:07+0530 [-] GFactory starting on 8888
2016-05-02 01:38:07+0530 [-] Starting factory <__main__.GFactory instance at 0x11bac75f0>
2016-05-02 01:38:19+0530 [-] Building Protocol in factory1
2016-05-02 01:38:19+0530 [-] IPv4Address(TCP, '127.0.0.1', 64913)
2016-05-02 01:38:19+0530 [-] Building Protocol in factory2
2016-05-02 01:38:19+0530 [-] IPv4Address(TCP, '127.0.0.1', 64914)
2016-05-02 01:38:19+0530 [-] Building Protocol in factory3
2016-05-02 01:38:19+0530 [-] IPv4Address(TCP, '127.0.0.1', 64915)
2016-05-02 01:38:19+0530 [-] "127.0.0.1" - - [01/May/2016:20:08:19 +0000] "GET / HTTP/1.1" 200 800 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"

以下是我的查询

1)如上所示,为3个不同端口的请求创建了3种不同的协议。这是预期的行为吗?每个请求不应该有一个协议吗?

2)如果我必须在请求到期或协议关闭时采取某些行动,我应该研究哪种协议?

0 个答案:

没有答案
相关问题