异步服务和协程

mac2022-06-30  102

一般代码的同步执行

阻塞的问题

异步解决的问题:

异步处理可以让应用在长时间api和数据库请求中避免阻塞的时间耗费,最终更快地服务更多请求

注意:

异步代码增加了复杂度,只在特定的

 

应用异步

  先从同步版本开始

  pip install requests

  增加一个保存url图片的功能

  handler和路由

  使用协程coroutine

tronado的异步模块

  tornado.gen.coroutine+yield

  tornado.httpclient.AsyncHTTPClient

 

异步的类代码

import requestsfrom tornado.httpclient import AsyncHTTPClientfrom tornado.gen import coroutinefrom .main import BaseHandelrfrom utils.photo import UploadImage class AsyncSaveHandler(BaseHandelr): @coroutine def get(self): save_url = self.get_argument('save_url', '') print(save_url) client = AsyncHTTPClient() resp = yield client.fetch(save_url) up_img = UploadImage('x.jpg', self.settings['static_path']) up_img.save_upload(resp.body) up_img.make_thumb() post_id = self.orm.add_post(up_img.image_url, up_img.thumb_url, self.current_user) self.redirect('/post/{}'.format(post_id))

转载于:https://www.cnblogs.com/wdty/p/10937658.html

最新回复(0)