技术解析
实现的方式类似这样:
from twisted.web import server, resource
from twisted.internet import reactor, endpoints
class Counter(resource.Resource):
isLeaf = True
numberRequests = 0
def render_GET(self, request):
self.numberRequests += 1
request.setHeader(b"content-type", b"text/plain")
content = u"I am request #{}\n".format(self.numberRequests)
return content.encode("ascii")
endpoints.serverFromString(reactor, "tcp:8080").listen(server.Site(Counter(抗投诉服务器)))
reactor.run()
每次请求会模拟一个长连接,满足条件在返回。目前在使用这种方式统一处理浏览器刷新或关闭(目前发现刷新时有时不会触发):
request._disconnected
因需求变了, 刷新和关闭需要分别对待,那么 twisted 支持这种机制吗? 谢谢