Подсчет количества запросов в секунду в Tornado

Я новичок в Python и Tornado WebServer. Я пытаюсь выяснить количество запросов и количество запросов в секунду в моем коде на стороне сервера. Я использую Tornadio2 для реализации веб-сокетов.

Пожалуйста, взгляните на следующий код и дайте мне знать, какие изменения можно внести в него. Я использую RequestHandler.prepare (), чтобы ограничить все запросы, и использую список, поскольку он неизменяем для хранения счетчика.

Считайте, что все модули включены.

    count=[0]
    class IndexHandler(tornado.web.RequestHandler):
     """Regular HTTP handler to serve the chatroom page"""
       def prepare(self):
       count[0]=count[0]+1

       def get(self):
         self.render('index1.html')

   class SocketIOHandler(tornado.web.RequestHandler):
      def get(self):
         self.render('../socket.io.js')

  partQue=Queue.Queue()
  class ChatConnection(tornadio2.conn.SocketConnection):
        participants = set()
        def on_open(self, info):
           self.send("Welcome from the server.")
           self.participants.add(self)     

       def on_message(self, message):
            partQue.put(message)
            time.sleep(10)
            self.qmes=partQue.get()
            for p in self.participants:
                p.send(self.qmes+" "+str(count[0]))
            partQue.task_done()   

      def on_close(self):
           self.participants.remove(self)
           partQue.join()

 # Create tornadio server
  ChatRouter = tornadio2.router.TornadioRouter(ChatConnection)

 # Create socket application
  sock_app = tornado.web.Application(
      ChatRouter.urls, 
      flash_policy_port = 843,
      flash_policy_file = op.join(ROOT, 'flashpolicy.xml'),
      socket_io_port = 8002)

 # Create HTTP application
 http_app = tornado.web.Application(
      [(r"/", IndexHandler), (r"/socket.io.js", SocketIOHandler)])

 if __name__ == "__main__":
     import logging
     logging.getLogger().setLevel(logging.DEBUG)

     # Create http server on port 8001
     http_server = tornado.httpserver.HTTPServer(http_app)
     http_server.listen(8001)

     # Create tornadio server on port 8002, but don't start it yet
     tornadio2.server.SocketServer(sock_app, auto_start=False)

     # Start both servers
     tornado.ioloop.IOLoop.instance().start()

Кроме того, меня смущают все сообщения Websocket. Каждое ли событие Websocket попадает на сервер в виде HTTP-запроса? или запрос Socket.IO?

5
задан Axe 24 January 2012 в 21:50
поделиться