Пример кода для базового веб-сервера, предоставленный http://twistedmatrix.com/trac/ , кажется, увеличивает счетчик запросов на два для каждого запроса, а не на 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
Итак, судя по счетчику , сервер появляется s для вызова функции render_GET дважды для каждого запроса. Я запускаю это в Windows 7 с использованием Python 2.7. Есть идеи, что может происходить, или это ожидаемое поведение?
Обновление: код работает отлично, обманывает браузер. При каждом обновлении страницы браузер отправляет запрос GET для «/» и «/favicon.ico», который учитывает увеличение на 2, потому что функция render_GET фактически вызывается дважды при обновлении страницы.