Esempio n. 1
0
    def run(self):
        asyncio.set_event_loop(asyncio.new_event_loop())
        tornado.platform.asyncio.AsyncIOMainLoop().install()
        #~ tornado.autoreload.start()
        #~ tornado.autoreload.watch( sys.argv[0] )

        app=tornado.web.Application([
            (r'/ws',            WebSocketHandler,dict(instance=self.instance)),
            (r'/_/(?P<url>.+)', ProxyHandler,dict(instance=self.instance)),
            (r'/guy.js',        GuyJSHandler,dict(instance=self.instance)),
            (r'/(?P<page>[^/]+)/guy.js',        GuyJSHandler,dict(instance=self.instance)),
            (r'/(?P<page>[^\\.]*)',  MainHandler,dict(instance=self.instance)),
            (r'/(.*)',          tornado.web.StaticFileHandler, {'path': os.path.join( pathToData(), FOLDERSTATIC) })
        ])
        app.listen(self.port,address=self.host)

        self.loop=asyncio.get_event_loop()

        async def _waitExit():
            while self._exit==False:
                await asyncio.sleep(0.1)

        self._exit=False
        self.loop.run_until_complete(_waitExit())

        # gracefull death
        ## tasks = asyncio.all_tasks(self.loop) #py37
        tasks = asyncio.Task.all_tasks(self.loop) #py35
        for task in tasks: task.cancel()
        try:
            self.loop.run_until_complete(asyncio.gather(*tasks))
        except concurrent.futures._base.CancelledError:
            pass
Esempio n. 2
0
    def run(self):
        statics = os.path.join(self.instance._folder, FOLDERSTATIC)

        asyncio.set_event_loop(asyncio.new_event_loop())
        tornado.platform.asyncio.AsyncIOMainLoop().install()
        if self.autoreload:
            print("**AUTORELOAD**")
            tornado.autoreload.start()
            tornado.autoreload.watch(sys.argv[0])
            if os.path.isdir(statics):
                for p in os.listdir(statics):
                    tornado.autoreload.watch(
                        os.path.abspath(os.path.join(statics, p)))

        app = tornado.web.Application([
            (r'/_/(?P<url>.+)', ProxyHandler, dict(instance=self.instance)),
            (r'/(?P<id>[^/]+)-ws', WebSocketHandler,
             dict(instance=self.instance)),
            (r'/(?P<id>[^/]+)-js', GuyJSHandler, dict(instance=self.instance)),
            (r'/(?P<page>[^\.]*)', MainHandler, dict(instance=self.instance)),
            (r'/(.*)', tornado.web.StaticFileHandler, dict(path=statics))
        ])
        app.listen(self.port, address=self.host)

        self.loop = asyncio.get_event_loop()

        async def _waitExit():
            while self._exit == False:
                await asyncio.sleep(0.1)

        self._exit = False
        self.loop.run_until_complete(_waitExit())

        # gracefull death
        try:
            tasks = asyncio.all_tasks(self.loop)  #py37
        except:
            tasks = asyncio.Task.all_tasks(self.loop)  #py35
        for task in tasks:
            task.cancel()
        try:
            self.loop.run_until_complete(asyncio.gather(*tasks))
        except concurrent.futures._base.CancelledError:
            pass