LINUX.ORG.RU

Tornado - где ошибка в роутинге (о ошибке в ДНК уже знаю :-) )

 ,


0

1

Собственно, код примерно таков :

class JsonRequestHandler(RequestHandler):
    def send_answer(self, answer):
        json_data = json.dumps(answer)
        wrapper = self.get_argument("jsonp_wrapper", None)
        if wrapper is None:
            self.set_header("Content-Type", "application/json")
            self.write(json_data)
        else:
            self.set_header("Content-Type", "application/javascript")
            self.write(wrapper + "(" + json_data + ")")
        self.finish()

    async def get(self):
        try:
            answer = await self._get()
            self.send_answer({"success": True, "response": answer})
        except Exception as err:
            self.send_answer({"success": False})

    async def _get(self):
        raise NotImplementedError()

class StocksHandler(JsonRequestHandler):
    async def _get(self):
        return await logic.stocks()

class StatsHandler(JsonRequestHandler):
    async def _get(self):
        filter = self.get_argument("q", "")
        assert filter != ""
        from_time = datetime.datetime.fromtimestamp(
            int(self.get_argument("from", 0))
        )
        to_time = datetime.datetime.fromtimestamp(
            int(self.get_argument("from", 0))
        )
        exclude_neutral = bool(self.get_argument("no_neutral", False))
        assert to_time >= from_time
        stock_id = await logic.classify_stock_tweets(filter)
        return await logic.stock_stats(stock_id, from_time, to_time, exclude_neutral)


config = Configuration.from_file(config_path)
logic = AppLogic(config)
asyncio.get_event_loop().run_until_complete(logic.initialize())
AsyncIOMainLoop().install()
application = Application([
    ('/stocks', StocksHandler,),
    ('/stats', StatsHandler,)
])
application.listen(config.port)
asyncio.get_event_loop().run_forever()

Однако - реакции на запрос к 127.0.0.1:8000/stocks?jsonp_wrapper=alert - хрен. Притом - если перепилить «роутинг» :

application = Application([
    ('/stocks', StocksHandler,),
    ('/stats', StatsHandler,)
])
то оно бодро возвращает результат.

А не - хромогое поделие не распарсило, что перед ним адрес, а не запрос. Зря я не полез в curl.

alex4321 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.