example05.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. # 请求天行数据提供的API数据接口
  15. REQ_URL = 'http://api.tianapi.com/guonei/'
  16. # 在天行数据网站注册后可以获得API_KEY
  17. API_KEY = 'your_personal_api_key'
  18. class MainHandler(tornado.web.RequestHandler):
  19. """自定义请求处理器"""
  20. async def get(self):
  21. async with aiohttp.ClientSession() as session:
  22. resp = await session.get(f'{REQ_URL}?key={API_KEY}')
  23. json_str = await resp.text()
  24. print(json_str)
  25. newslist = json.loads(json_str)['newslist']
  26. self.render('news.html', newslist=newslist)
  27. def main():
  28. """主函数"""
  29. parse_command_line()
  30. app = tornado.web.Application(
  31. handlers=[(r'/', MainHandler), ],
  32. template_path=os.path.join(os.path.dirname(__file__), 'templates'),
  33. )
  34. app.listen(options.port)
  35. tornado.ioloop.IOLoop.current().start()
  36. if __name__ == '__main__':
  37. main()