模板网站制作多少钱招聘信息发布平台

张小明 2025/12/31 21:18:21
模板网站制作多少钱,招聘信息发布平台,wordpress怎么搜索中文主题,怎么办网站平台大家好#xff0c;我是jobleap.cn的小九。 aiohttp 是 Python 生态中最主流的异步 HTTP 客户端/服务器框架#xff0c;基于 asyncio 实现#xff0c;支持异步 HTTP 请求、WebSocket 通信、HTTP 服务器开发等核心能力#xff0c;广泛应用于高并发爬虫、异步 API 服务开发等场…大家好我是jobleap.cn的小九。aiohttp 是 Python 生态中最主流的异步 HTTP 客户端/服务器框架基于 asyncio 实现支持异步 HTTP 请求、WebSocket 通信、HTTP 服务器开发等核心能力广泛应用于高并发爬虫、异步 API 服务开发等场景。本教程将从环境准备到核心 API 实战再到综合案例全面串联 aiohttp 的常用功能确保你能一站式掌握其核心用法。一、环境准备1. 版本要求Python 版本≥3.7推荐 3.8asyncio 特性更稳定aiohttp 版本推荐最新稳定版当前主流为 3.92. 安装pipinstallaiohttp# 核心库pipinstallaiohttp[speedups]# 安装加速依赖可选二、aiohttp 客户端核心 API 实战客户端是 aiohttp 最常用的场景用于异步发送 HTTP 请求GET/POST/PUT/DELETE 等核心载体是aiohttp.ClientSession建议复用 Session 以节省资源。1. 基础异步 GET 请求核心 APIClientSession.get()async with上下文管理自动释放连接。importasyncioimportaiohttpasyncdefbasic_get_request():# 1. 创建 ClientSession复用连接建议全局/单例asyncwithaiohttp.ClientSession()assession:# 2. 发送 GET 请求async with 自动处理响应关闭asyncwithsession.get(https://httpbin.org/get)asresponse:# 3. 响应基础信息print(状态码:,response.status)# 200print(响应头:,dict(response.headers))# 4. 解析响应内容text()/json()/read()text_contentawaitresponse.text()# 字符串形式json_contentawaitresponse.json()# JSON 解析自动转字典# bytes_content await response.read() # 字节形式print(JSON 响应内容:,json_content)# 运行异步函数if__name____main__:asyncio.run(basic_get_request())2. 带参数的 GET 请求核心 APIparams参数自动拼接 URL 查询字符串。asyncdefget_with_params():asyncwithaiohttp.ClientSession()assession:# 构造查询参数字典/列表/元组params{name:aiohttp,version:3.9,page:1}# 发送带参数的 GET 请求最终 URLhttps://httpbin.org/get?nameaiohttpversion3.9page1asyncwithsession.get(urlhttps://httpbin.org/get,paramsparams)asresponse:dataawaitresponse.json()print(请求参数验证:,data[args])# 输出传入的 paramsasyncio.run(get_with_params())3. 异步 POST 请求核心 APIClientSession.post()支持两种常见数据格式表单form-data、JSON。3.1 发送表单数据form-dataasyncdefpost_form_data():asyncwithaiohttp.ClientSession()assession:# 构造表单数据form_dataaiohttp.FormData()form_data.add_field(username,test_user)form_data.add_field(password,123456)# 可选上传文件form-data 场景# form_data.add_field(file, open(test.txt, rb), filenametest.txt)# 发送 POST 请求data 参数传 FormDataasyncwithsession.post(urlhttps://httpbin.org/post,dataform_data)asresponse:dataawaitresponse.json()print(表单数据响应:,data[form])# 输出 {username:test_user,password:123456}asyncio.run(post_form_data())3.2 发送 JSON 数据asyncdefpost_json_data():asyncwithaiohttp.ClientSession()assession:# 构造 JSON 数据字典json_data{title:aiohttp 教程,content:异步 HTTP 客户端,tags:[python,asyncio,aiohttp]}# 发送 JSON 请求json 参数自动序列化并设置 Content-Type: application/jsonasyncwithsession.post(urlhttps://httpbin.org/post,jsonjson_data)asresponse:dataawaitresponse.json()print(JSON 数据响应:,data[json])# 输出传入的 json_dataasyncio.run(post_json_data())4. 请求头与 Cookie 配置核心 APIheaders参数自定义请求头、cookies参数设置 Cookie。asyncdefcustom_headers_cookies():# 1. 自定义请求头headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) aiohttp/3.9,Referer:https://example.com,Authorization:Bearer your_token_here# 认证 Token}# 2. 自定义 Cookiecookies{session_id:123456789,user_lang:zh-CN}asyncwithaiohttp.ClientSession(headersheaders,# 全局请求头Session 级别所有请求生效cookiescookies# 全局 CookieSession 级别)assession:# 局部请求头覆盖全局asyncwithsession.get(https://httpbin.org/headers,headers{X-Custom-Header:aiohttp-test})asresponse:dataawaitresponse.json()print(请求头验证:,data[headers])print(Cookie 验证:,awaitsession.cookie_jar.filter_cookies(https://httpbin.org))5. 超时控制核心 APIaiohttp.ClientTimeout全局/局部超时避免请求无限阻塞。asyncdeftimeout_control():# 1. 定义超时配置总超时 5 秒连接超时 2 秒读取超时 3 秒timeoutaiohttp.ClientTimeout(total5,# 总超时推荐设置connect2,# 连接超时sock_read3# 读取响应超时)asyncwithaiohttp.ClientSession(timeouttimeout)assession:try:# 测试超时访问一个慢接口asyncwithsession.get(https://httpbin.org/delay/10)asresponse:print(awaitresponse.text())exceptasyncio.TimeoutError:print(请求超时)exceptaiohttp.ClientErrorase:print(客户端错误:,e)asyncio.run(timeout_control())6. 并发请求批量发送核心 APIasyncio.gather()并发执行多个异步请求结合ClientSession实现高并发。asyncdeffetch_url(session,url):单个 URL 请求函数try:asyncwithsession.get(url)asresponse:return{url:url,status:response.status,content:awaitresponse.text()[:50]}exceptExceptionase:return{url:url,error:str(e)}asyncdefbatch_requests():# 待请求的 URL 列表urls[https://httpbin.org/get,https://httpbin.org/delay/1,# 延迟 1 秒https://httpbin.org/status/404,# 404 状态码https://invalid-url.example.com# 无效 URL]asyncwithaiohttp.ClientSession()assession:# 构造任务列表tasks[fetch_url(session,url)forurlinurls]# 并发执行所有任务gather 等待所有任务完成resultsawaitasyncio.gather(*tasks)# 打印结果forresinresults:print(并发请求结果:,res)asyncio.run(batch_requests())7. 异常处理aiohttp 客户端常见异常aiohttp.ClientError所有客户端异常的基类aiohttp.ClientConnectionError连接错误如网络不通aiohttp.ClientResponseError响应错误如 4xx/5xxasyncio.TimeoutError超时错误asyncdefexception_handling():asyncwithaiohttp.ClientSession()assession:try:asyncwithsession.get(https://httpbin.org/status/404)asresponse:# 主动检查状态码非 2xx/3xx 抛出异常response.raise_for_status()print(awaitresponse.text())exceptaiohttp.ClientResponseErrorase:print(f响应错误: 状态码{e.status}, 消息{e.message})exceptaiohttp.ClientConnectionErrorase:print(f连接错误:{e})exceptasyncio.TimeoutError:print(请求超时)exceptaiohttp.ClientErrorase:print(f客户端通用错误:{e})asyncio.run(exception_handling())三、aiohttp 服务器核心 API 实战aiohttp 也支持搭建异步 HTTP 服务器核心载体是aiohttp.web.Application适用于轻量级 API 服务开发。1. 基础 HTTP 服务器搭建核心 APIweb.Application()web.run_app() 路由装饰器routes.get/post。fromaiohttpimportweb# 1. 定义请求处理函数接收 request 参数返回 Responseasyncdefhello_handler(request):# 返回文本响应默认状态码 200returnweb.Response(textHello, aiohttp Server!)# 2. 创建 Application 实例核心容器appweb.Application()# 3. 注册路由URL 路径 → 处理函数app.add_routes([web.get(/hello,hello_handler),# GET 请求 → /hello 路径])# 4. 运行服务器默认端口 8080host 0.0.0.0if__name____main__:web.run_app(app,host0.0.0.0,port8080)运行后访问http://localhost:8080/hello将返回Hello, aiohttp Server!。2. 路由管理静态/动态路由2.1 动态路由参数核心 API路由路径中使用{param}定义参数通过request.match_info获取。asyncdefuser_handler(request):# 获取动态路由参数user_idrequest.match_info.get(user_id)usernamerequest.match_info.get(username,guest)# 带默认值returnweb.Response(textfUser ID:{user_id}, Username:{username})# 注册动态路由app.add_routes([web.get(/user/{user_id}/{username},user_handler),# 多参数web.get(/user/{user_id},user_handler),# 单参数])访问http://localhost:8080/user/123/aiohttp返回User ID: 123, Username: aiohttp。2.2 路由列表批量注册# 定义多个处理函数asyncdefhome_handler(request):returnweb.Response(textHome Page)asyncdefabout_handler(request):returnweb.Response(textAbout aiohttp Server)# 批量注册路由routesweb.RouteTableDef()# 路由表routes.add_get(/,home_handler)routes.add_get(/about,about_handler)app.add_routes(routes)# 注册到应用3. 请求参数解析服务器端解析客户端传入的参数GET 查询参数、POST JSON/表单数据。3.1 解析 GET 查询参数asyncdefget_params_handler(request):# 获取 GET 查询参数如 /query?nameaiohttppage1namerequest.query.get(name,unknown)pageint(request.query.get(page,1))returnweb.Response(textfName:{name}, Page:{page})app.add_routes([web.get(/query,get_params_handler)])3.2 解析 POST JSON 数据asyncdefpost_json_handler(request):try:# 解析 JSON 数据自动转字典dataawaitrequest.json()titledata.get(title)contentdata.get(content)returnweb.json_response({status:success,data:{title:title,content:content}})exceptExceptionase:# 返回 JSON 错误响应自定义状态码returnweb.json_response({error:str(e)},status400)app.add_routes([web.post(/json,post_json_handler)])3.3 解析 POST 表单数据asyncdefpost_form_handler(request):# 解析表单数据dataawaitrequest.post()usernamedata.get(username)passworddata.get(password)returnweb.Response(textfUsername:{username}, Password:{password})app.add_routes([web.post(/form,post_form_handler)])4. 中间件Middleware中间件用于拦截请求/响应实现日志、认证、异常处理等通用逻辑核心 APIweb.Application(middlewares[])。# 定义日志中间件asyncdeflog_middleware(app,handler):asyncdeflog_handler(request):# 请求前日志print(fRequest:{request.method}{request.path})# 执行原处理函数responseawaithandler(request)# 响应后日志print(fResponse:{response.status})returnresponsereturnlog_handler# 定义异常处理中间件asyncdeferror_middleware(app,handler):asyncdeferror_handler(request):try:returnawaithandler(request)exceptExceptionase:returnweb.json_response({error:str(e)},status500)returnerror_handler# 创建应用并注册中间件执行顺序先注册的先执行appweb.Application(middlewares[log_middleware,error_middleware])5. 静态文件服务核心 APIweb.static()用于提供静态文件HTML/CSS/JS/图片等。# 注册静态文件路由/static 路径映射到本地 static 目录app.add_routes([web.static(/static,./static)# 本地目录 ./static → http://localhost:8080/static/xxx])将静态文件如index.html放入./static目录访问http://localhost:8080/static/index.html即可访问。四、综合实战异步爬虫 简易 API 服务器本案例串联 aiohttp 客户端爬虫和服务器API服务器端提供两个接口/api/data 返回模拟数据/api/save 接收爬虫数据并存储客户端异步爬取第三方数据调用服务器 /api/save 接口提交数据再调用 /api/data 接口验证存储结果。1. 服务器端实现server.pyfromaiohttpimportweb# 模拟存储数据的列表storage[]# 1. 返回模拟数据接口asyncdefget_data_handler(request):returnweb.json_response({data:storage,count:len(storage)})# 2. 接收爬虫数据并存储asyncdefsave_data_handler(request):try:dataawaitrequest.json()storage.append(data)returnweb.json_response({status:success,message:数据已保存})exceptExceptionase:returnweb.json_response({status:error,message:str(e)},status400)# 3. 创建应用并注册路由appweb.Application()app.add_routes([web.get(/api/data,get_data_handler),web.post(/api/save,save_data_handler)])# 4. 运行服务器if__name____main__:web.run_app(app,host0.0.0.0,port8080)2. 客户端实现client.pyimportasyncioimportaiohttpasyncdefcrawl_and_save():# 1. 异步爬取第三方测试数据asyncwithaiohttp.ClientSession()assession:# 爬取 httpbin 的测试数据asyncwithsession.get(https://httpbin.org/get?sourceaiohttp_crawler)asresponse:crawl_dataawaitresponse.json()print(爬取的数据:,crawl_data)# 2. 调用服务器 /api/save 接口提交数据asyncwithsession.post(http://localhost:8080/api/save,jsoncrawl_data)asresponse:save_resultawaitresponse.json()print(保存结果:,save_result)# 3. 调用服务器 /api/data 接口验证数据asyncwithsession.get(http://localhost:8080/api/data)asresponse:verify_dataawaitresponse.json()print(验证存储数据:,verify_data)if__name____main__:asyncio.run(crawl_and_save())3. 运行与验证先启动服务器python server.py再运行客户端python client.py客户端输出会显示爬取数据 → 保存成功 → 验证存储的结果也可直接访问http://localhost:8080/api/data查看存储的数据。五、总结与进阶方向1. 核心 API 总结模块核心 API/类核心用途客户端ClientSession异步 HTTP 请求会话复用连接get()/post()/put()/delete()发送对应方法的 HTTP 请求ClientTimeout超时控制response.text()/json()响应数据解析服务器web.Application服务器核心容器web.RouteTableDef路由表管理web.Response/json_response构建响应request.query/match_info解析请求参数通用asyncio.gather()并发执行异步任务2. 进阶方向WebSocket 通信aiohttp 支持异步 WebSocket 客户端/服务器ClientSession.ws_connect()/web.WebSocketResponse连接池配置自定义 ClientSession 的连接池大小、超时、代理等HTTPS 证书处理忽略证书验证、自定义 CA 证书性能优化结合aiohttp[speedups]、限制并发数避免请求过多生产级服务器配合 gunicorn aiohttp 运行服务器而非web.run_app()。通过本教程你已掌握 aiohttp 客户端和服务器的核心常用 API且通过综合案例实现了两者的串联。实际开发中可根据场景爬虫/API 服务灵活组合这些 API充分发挥异步编程的高并发优势。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

微网站下载资料怎么做合肥网站开发建设

终极指南:3个技巧让Proxmox VE管理效率翻倍 【免费下载链接】pvetools pvetools - 为 Proxmox VE 设计的脚本工具集,用于简化邮件、Samba、NFS、ZFS 等配置,以及嵌套虚拟化、Docker 和硬件直通等高级功能,适合系统管理员和虚拟化技…

张小明 2025/12/31 7:59:55 网站建设

网站除了域名还要什么seo经验是什么

Linly-Talker在音乐MV创作中的艺术实验 在当代音乐产业中,视觉表达早已与声音本身同等重要。一首歌的传播力,往往不只取决于旋律与歌词,更在于它能否构建出令人沉浸的视听世界。而当AI技术悄然渗透进内容创作的底层逻辑时,我们正见…

张小明 2025/12/31 7:59:43 网站建设

国家网站后缀阿里云wordpress优化

iOS项目架构实战:构建高可用评论系统的最佳路径 【免费下载链接】iOSProject iOS project of collected some demos for iOS App, use Objective-C 项目地址: https://gitcode.com/gh_mirrors/io/iOSProject 在移动应用开发中,评论系统的实现往往…

张小明 2025/12/31 7:59:31 网站建设

做企业网站需要做什么福州网页设计培训

大家好我是风歌,曾担任某大厂java架构师,如今专注java毕设领域。今天要和大家聊的是一款java小程序项目——基于微信小程序的高校课堂教学管理系统。项目源码以及远程配置部署相关请联系风歌,文末附上联系信息。项目简介:权限按管…

张小明 2025/12/31 7:59:12 网站建设

网站开发seo规范群晖wordpress慢

一次成功的企业采购,往往始于对纷繁信息的高效整合。在联想上海来酷智生活旗舰店,人形机器人“联想乐享壹号”正在向顾客演示如何快速推荐匹配的商用笔记本,这背后是企业采购从传统模式向智能体验的深刻变革。 企业采购电脑设备时&#xff0c…

张小明 2025/12/31 10:00:11 网站建设

做问卷调查的是哪个网站好凡科互动app

LangFlow零废弃生活挑战助手设计 在环保意识日益增强的今天,越来越多的人希望践行“零废弃生活”——减少一次性用品、重复利用资源、精准分类垃圾。但理想很丰满,现实却常常让人无从下手:今天该做什么?哪些行为真正有效&#xf…

张小明 2025/12/31 10:00:09 网站建设