example05.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. """
  2. example05.py - 异步请求的例子
  3. """
  4. import aiohttp
  5. import json
  6. import os
  7. import tornado.gen
  8. import tornado.ioloop
  9. import tornado.web
  10. import tornado.websocket
  11. import tornado.httpclient
  12. from tornado.options import define, options, parse_command_line
  13. define('port', default=8888, type=int)
  14. REQ_URL = 'http://api.tianapi.com/guonei/'
  15. API_KEY = '772a81a51ae5c780251b1f98ea431b84'
  16. class MainHandler(tornado.web.RequestHandler):
  17. """自定义请求处理器"""
  18. async def get(self):
  19. async with aiohttp.ClientSession() as session:
  20. resp = await session.get(f'{REQ_URL}?key={API_KEY}')
  21. json_str = await resp.text()
  22. print(json_str)
  23. newslist = json.loads(json_str)['newslist']
  24. self.render('news.html', newslist=newslist)
  25. def main():
  26. """主函数"""
  27. parse_command_line()
  28. app = tornado.web.Application(
  29. handlers=[(r'/', MainHandler), ],
  30. template_path=os.path.join(os.path.dirname(__file__), 'templates'),
  31. )
  32. app.listen(options.port)
  33. tornado.ioloop.IOLoop.current().start()
  34. if __name__ == '__main__':
  35. main()