import tornado.web import tornado.ioloop from tornado.options import define, options define('port', default=45000, help='try running on a given port', type=int) def fib(): a, b = 1, 1 while True: yield a a, b = b, a+b class IndexHandler(tornado.web.RequestHandler): def get(self): self.write('Fibonacci microservice.') class NextFibHandler(tornado.web.RequestHandler): fib_iter = fib() def get(self): response = str(next(self.fib_iter)) self.write(response) class First1000Handler(tornado.web.RequestHandler): def get(self): res = [] fib_iter = fib() for i in range(0, 1000): res.append(next(fib_iter)) self.write(str(res)) def make_app(): return tornado.web.Application([ (r'/', IndexHandler), (r'/next', NextFibHandler), (r'/onethousand', First1000Handler) ]) if __name__ == '__main__': tornado.options.parse_command_line() app = make_app() app.listen(options.port) print('==================================') print('Starting Fibanacci Microservice...') print('Listening on port: ' + str(options.port)) print('\r\n') tornado.ioloop.IOLoop.current().start()