import os.path from tornado import gen, web, websocket, escape, options from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServer from tornado.options import parse_command_line import psycopg2 import momoko settings = { 'cookie_secret': '__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__', 'template_path': os.path.join(os.path.dirname(__file__), 'templates'), 'static_path': os.path.join(os.path.dirname(__file__), 'static'), 'login_url': '/login', 'xsrf_cookies': True, 'debug': True, 'autoreload': True, 'server_traceback': True, } class BaseHandler(web.RequestHandler): @property def db(self): return self.application.db class TutorialHandler(websocket.WebSocketHandler): @property def db(self): return self.application.db waiters = set() def open(self, *args, **kwargs): self.waiters.add(self) # cursor = self.db.execute("SELECT * FROM users_user WHERE id=2") # data = cursor.fetchone() print({'hello': 'test'}) @gen.coroutine def on_message(self, message): parsed = escape.json_decode(message) if 'dummy' in parsed: return insert_sql = "INSERT INTO chat_message (id,text,created,order_id, user_id) VALUES (DEFAULT,'{0}',NOW(),6,4)".format(str(parsed['message'])) yield self.db.execute(insert_sql) cursor = yield self.db.execute("SELECT * FROM chat_message") data = cursor.fetchall() for waiter in self.waiters: waiter.write_message({'msg': parsed['message']}) def check_origin(self, origin): return True # @gen.coroutine # def get(self): # cursor = yield self.db.execute("SELECT * FROM users_user WHERE id=2") # data = cursor.fetchone() # print(data[0]) # self.finish() class Application(web.Application): def __init__(self): handlers = [ (r"/chat", TutorialHandler), ] super().__init__(handlers=handlers, **settings) if __name__ == '__main__': parse_command_line() application = Application() ioloop = IOLoop.instance() application.db = momoko.Pool( dsn='dbname=archilance user=postgres password=postgres host=localhost', size=1, ioloop=ioloop, ) future = application.db.connect() ioloop.add_future(future, lambda f: ioloop.stop()) ioloop.start() future.result() http_server = HTTPServer(application) http_server.listen(8888, 'localhost') ioloop.start()