from twisted.web.resource import Resource
from twisted.web.server import Site, Session
from twisted.internet import ssl
from twisted.internet import reactor
class Echo(Resource):
def render_GET(self, request):
return "GET"
class WebSite(Resource):
def start(self):
factory = Site(self, timeout=5)
factory.sessionFactory = Session
self.putChild("echo", Echo())
reactor.listenSSL(443, factory, ssl.DefaultOpenSSLContextFactory('privkey.pem', 'cacert.pem'))
#reactor.listenTCP(8080, factory)
self.sessions = factory.sessions
if __name__ == '__main__':
ws = WebSite()
ws.start()
reactor.run()
在上面的代碼中,當我從Web瀏覽器輸入url「https:// localhost/echo」時,它會獲取頁面。 5秒後,我嘗試重新加載頁面,它不刷新網頁,停留在重新加載操作。在重新加載的第二次嘗試中,它立即獲取頁面。Python扭曲,SSL超時錯誤
當我運行上面的代碼與reactor.listenTCP(8080,工廠),沒有這樣的問題發生。 (我可以重新加載頁面,無需重新加載並立即獲取頁面)
問題可以通過Chrome,Firefox重複。但是當我用Ubuntu的Epiphany瀏覽器嘗試它時,不會出現這樣的問題。
我不明白爲什麼會出現這種情況。
關於理解/解決問題的任何評論將被評價。
額外的信息:
- 當我使用listenSSL,與連接相關的文件描述符超時幾秒鐘之後不會關閉。在重新加載頁面時,它保持不變,並且在第二次重新加載操作時,它將被關閉並打開新的文件描述符。 (並且我立即得到頁面)
- 當我使用listenTCP時,文件描述符在超時秒後關閉,當我重新加載頁面時,它會立即打開新的文件描述符並返回頁面。
- 同樣使用Telnet連接,它在兩種情況下均按預期超時連接。
- 連接此服務器的扭曲客戶端也會按預期影響超時。