from os import listdir import tornado.gen import tornado.httpserver import tornado.ioloop import tornado.web import tornado.netutil def make_app(): """ Make tornado application instance :return: Tornado Application instance """ def get_files(dir): """ Get all file-/directory-names in a directory with a simple blacklist :param str: directory to read :return: String[] of file/directory """ return [d for d in listdir(dir) if not d.startswith("_")] def map_routes(dir): """ Map out a directory array of modules in a given directory :param str: directory to map out and import :return: tuple( endpoint, module.handle )[] routes """ routes = [] apis = get_files(dir) for api in apis: if api.endswith(".py"): api = api.rstrip(".py") routes.append( ( r"/%s/%s" % (dir, api), __import__("%s.%s" % (dir.replace("/", "."), api), fromlist=[""]).handle )) else: routes += map_routes("%s/%s" % (dir, api)) return routes routes = map_routes("api") return tornado.web.Application(routes)