server.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import random
  2. import sys
  3. import motor
  4. import tornado.ioloop
  5. import tornado.web
  6. from tornado import gen, escape
  7. import tornado.options
  8. from tornado.options import options
  9. import tornado.httpserver
  10. tornado.options.define('port', default=8888, type=int, help="Server port")
  11. class BaseHandler(torando.web.RequestHandler):
  12. def compute_etag(self):
  13. return None
  14. class JsonSerializeTestHandler(BaseHandler):
  15. def get(self):
  16. obj = dict(message="Hello, World!")
  17. self.write(obj)
  18. class PlaintextHandler(BaseHandler):
  19. def get(self):
  20. self.set_header('Content-Type', 'text/plain')
  21. self.write(b"Hello, World!")
  22. class QueryTestHandler(BaseHandler):
  23. @tornado.web.asynchronous
  24. @gen.coroutine
  25. def get(self):
  26. queries = int(self.get_argument("queries", 0))
  27. if queries == 0:
  28. random_id = random.randint(1, 10000)
  29. world = yield gen.Task(db.world.find_one,{"id": random_id}, fields={"_id": 0, "id": 1, "randomNumber": 1})
  30. # Get first postion on arguments, and so first postion in mongo return
  31. world = world[0][0]
  32. else:
  33. worlds = []
  34. for i in xrange(int(queries)):
  35. random_id = random.randint(1, 10000)
  36. world = yield gen.Task(db.world.find_one,{"id": random_id}, fields={"_id": 0, "id": 1, "randomNumber": 1})
  37. # Get first postion on arguments, and so first postion in mongo return
  38. worlds.append(world[0][0])
  39. worlds = escape.json_encode(worlds)
  40. self.set_header("Content-Type", "application/json; charset=UTF-8")
  41. self.write(worlds if queries > 0 else world)
  42. application = tornado.web.Application([
  43. (r"/json", JsonSerializeTestHandler),
  44. (r"/plaintext", PlaintextHandler),
  45. (r"/db", QueryTestHandler),
  46. ])
  47. if __name__ == "__main__":
  48. tornado.options.parse_command_line()
  49. server = tornado.httpserver.HTTPServer(application)
  50. server.bind(options.port)
  51. server.start(0)
  52. db = motor.MotorClient("localhost").open_sync().hello_world
  53. tornado.ioloop.IOLoop.instance().start()