一般代码的同步执行
阻塞的问题
异步解决的问题:
异步处理可以让应用在长时间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