Я хочу self.webSocketsPool = [] в моем коде, потому что у меня есть ошибка AttributeError: У объекта 'Application' нет атрибута 'webSocketsPool'. Но я не знаю, где мне нужно вставить это в мое приложение торнадо.
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
(r"/dishtypes/(.*)", DishTypesHandler),
(r"/test", testhandler),
(r"/user/([0-9]+)", UserProfile),
(r"/login", LoginHandler),
(r"/testcookie", testcoockie),
(r"/registration", registrationHandler),
(r"/authentication", authHandler),
(r"/remc", removecockie),
(r"/adddish", addDish),
(r"/getusrbasket", getUserBasket),
(r"/payorder", payOrder),
(r"/clientorders", clientOrdersHandler),
(r"/clientorders/([0-9]+)", clientOrdersIdHandler),
(r'/websocket/?', WebSocket),
], **settings,
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
default_handler_class=NotFoundHandler)
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
строка ошибки находится в этом классе
class WebSocket(tornado.websocket.WebSocketHandler):
def open(self):
self.application.webSocketsPool.append(self)
def on_message(self, message):
db = self.application.db
message_dict = json.loads(message);
db.chat.insert(message_dict)
for key, value in enumerate(self.application.webSocketsPool):
if value != self:
value.ws_connection.write_message(message)
def on_close(self, message=None):
for key, value in enumerate(self.application.webSocketsPool):
if value == self:
del self.application.webSocketsPool[key]