潭州课堂25班:Ph201805201 tornado 项目 第十课 深入应用异步和协程(课堂笔记)...

本文介绍使用Tornado框架的异步模块实现从指定URL获取图片并保存至服务器的方法,同时将图片信息存入数据库。通过对比同步和异步处理方式,展示了异步操作在提高效率上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tornado 相关说明 

需求: 增加 /save 的 handler,实现异步保存指定 URL 图片的功能

从网页上得到一张图片地址,由这个地址将图片保存到服务器,并将相关数据保存到数据库

  

 

import requests
from .main import AuthBaseHandler
from utlis.photo import UploadImg, add_post_for

class SyncSaveHandler(AuthBaseHandler): """同步版本的保存 url """ def get(self, *args, **kwargs): save_url = self.get_argument('save_url', None) res = requests.get(save_url) uim = UploadImg('a.jpg', self.settings['static_path']) uim.save_upload(res.content) uim.save_thumb() post = add_post_for(self.current_user, uim.upload_url, uim.thumb_url) # post = add_post_for(username, uim.upload_url, uim.thumb_url) self.redirect('/post/{}'.format(post.id))

  

from tornado.gen import coroutine                  # 装饰器
from tornado.httpclient import AsyncHTTPClient # 异步模块

from .main import AuthBaseHandler
from utlis.photo import UploadImg, add_post_for


class AyncSaveHandler(AuthBaseHandler): """异步版本保存 URL""" @coroutine def get(self, *args, **kwargs): save_url = self.get_argument('save_url', None) username = self.get_argument('name', None) client = AsyncHTTPClient() # res = requests.get(save_url) res = yield client.fetch(save_url, request_timeout=20) uim = UploadImg('a.jpg', self.settings['static_path']) uim.save_upload(res.body) uim.save_thumb() post = add_post_for(self.current_user, uim.upload_url, uim.thumb_url) # post = add_post_for(username, uim.upload_url, uim.thumb_url) self.redirect('/post/{}'.format(post.id))

  

转载于:https://www.cnblogs.com/gdwz922/p/10514292.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值