class ServerLogic: def func(self, loop): loop.stop() def __init__(self): pass def run(self, u_info): # self, mojo_dir, tmp_dir, /// out_dir, dojoserver # register two data sources self.__segmentation = Segmentation(u_info.files_path, u_info.tmpdir, self) self.__image = Image(u_info.files_path, u_info.tmpdir) # and the controller self.__controller = Controller(u_info, self.__segmentation.get_database(), self) #### # and the viewer self.__viewer = Viewer(u_info) # and the controller if self.__segmentation: db = self.__segmentation.get_database() else: db = None self.__controller = Controller(u_info, db, self) # and the setup self.__setup = Setup(self, u_info.files_path, u_info.tmpdir) print('path_gfx: ', u_info.gfx_path) # running live #### ev_loop = asyncio.new_event_loop() asyncio.set_event_loop(ev_loop) dojo = tornado.web.Application( [(r'/dojo/gfx/(.*)', tornado.web.StaticFileHandler, { 'path': u_info.gfx_path }), (r'/ws', Websockets, dict(controller=self.__controller)), (r'/(.*)', DojoHandler, dict(logic=self))], debug=True, autoreload=True ) # (r'/dojo/gfx/(.*)', tornado.web.StaticFileHandler, {'path': '/dojo/gfx'}) # dojo.listen(u_info.port, max_buffer_size=1024*1024*150000) server = tornado.httpserver.HTTPServer(dojo) server.listen(u_info.port) print('*' * 80) print('*', 'DOJO RUNNING') print('*') print('*', 'open', '[ http://' + u_info.ip + ':' + str(u_info.port) + '/dojo/ ] ') print('*' * 80) tornado.ioloop.IOLoop.instance().start() ev_loop.stop() ev_loop.close() server.stop() # def sig_handler(signum, frame): # IOLoop.current().add_callback_from_signal(receiver.shutdown) print("Tornado web server stops.") return ## ## IOLoop.instance().stop() ## return ## def stop(): asyncio.asyncio_loop.stop() server.stop() # thread.join() def get_image(self): return self.__image def get_segmentation(self): return self.__segmentation def get_controller(self): return self.__controller def handle(self, r): content = None # the access to the viewer #if not self.__configured: # content, content_type = self.__setup.handle(r.request) #else: # viewer is ready content, content_type = self.__viewer.handle(r.request) # let the data sources handle the request if not content: content, content_type = self.__segmentation.handle(r.request) if not content: content, content_type = self.__image.handle(r.request) # invalid request if not content: content = 'Error 404' content_type = 'text/html' # print 'IP',r.request.remote_ip r.set_header('Access-Control-Allow-Origin', '*') r.set_header('Content-Type', content_type) r.write(content) def close(self, signal, frame): print('Sayonara..!!') output = {} output['origin'] = 'SERVER' sys.exit(0)