Python中的http通讯

http定义的与服务器交互的几种方法

  • get 获取信息,查询数据;
  • post 可以向服务器发出修改请求,从而修改服务器;
  • delete 删除数据,也可以通过get/post实现;
  • put 增加、放置数据,也可以通过get/post实现。

get和post的区别

  • GET请求的数据是放在HTTP包头中的,也就是URL之后,通常是像下面这样定义格式的,而Post是把提交的数据放在HTTP正文中的。

    login.action?name=hyddd&password=idontknow&verify=%E4%BD%E5%A5%BD

a,以 ? 来分隔URL和数据;

b,以& 来分隔参数;

c,如果数据是英文或数字,原样发送;

d,如果数据是中文或其它字符,则进行BASE64编码。

  • GET提交的数据比较少,最多1024B,因为GET数据是附在URL之后的,而URL则会受到不同环境的限制的,比如说IE对其限制为2K+35,而POST可以传送更多的数据,理论上是没有限制的,但一般也会受不同的环境,如浏览器、操作系统、服务器处理能力等限制,IIS4可支持80KB,IIS5可支持100KB。

  • 3)Post的安全性要比Get高,因为Get时,参数数据是明文传输的,而且使用GET的话,还可能造成Cross-site request forgery攻击。而POST数据则可以加密的,但GET的速度可能会快些。

Python HTTP异步通信通常涉及到利用Python的异步IO特性或者特定的库来进行高效的数据传输处理。这在需要处理大量并发连接、实时应用等场景下尤为关键。以下是几个关键点及其实现方式: ### 关键技术 #### 异步IO Python通过`asyncio`模块支持异步编程模型。这种模型允许程序同时执行多个任务而不需要挂起主线程等待I/O操作完成。 #### `aiohttp` `aiohttp`是一个用于PythonHTTP客户端和服务端库,专门设计用于网络请求,尤其适合于大规模并行请求和长轮询服务。 #### `tornado` `tornado`是一个高性能的网络应用框架,提供了异步HTTP服务器和客户端能力。它适用于创建高并发的web应用以及复杂的网络服务器。 #### `asyncio事件循环` 异步IO的核心是事件循环(Event Loop),它可以管理多个协程(coroutine),并按需调度这些协程以执行IO操作和其他计算任务。 ### 实现示例 - 使用`aiohttp` 假设我们想要发送多个HTTP请求,并异步获取响应数据: ```python import asyncio from aiohttp import ClientSession async def fetch(session, url): async with session.get(url) as response: return await response.text() async def main(): urls = ['https://example.com', 'https://google.com'] tasks = [] async with ClientSession() as session: for url in urls: task = asyncio.ensure_future(fetch(session, url)) tasks.append(task) responses = await asyncio.gather(*tasks) print(responses) # 运行异步函数 if __name__ == '__main__': asyncio.run(main()) ``` 上述代码展示了如何使用`aiohttp`库并发地发送多个HTTP GET请求。`asyncio.run()`函数会启动事件循环并运行主函数,直到所有异步任务完成。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sophia_xw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值