赞
踩
目录
Python的websockets库是一个用于处理WebSocket协议的库,WebSocket是一个用于在浏览器和服务器间进行全可信双向通信的网络协议。
其应用场景主要包括:
通常来说,只要涉及到需要服务器和客户端进行双向实时交互的应用,都可以使用websockets库来实现。
websockets不是Python的标准库,他是一个Python的第三方库,可以通过pip进行安装。
Python中websockets库的常用方法有以下几个:
- import asyncio
- import websockets
-
- async def hello(websocket, path):
- name = await websocket.recv()
- print(f"< {name}")
-
- greeting = f"Hello {name}!"
-
- await websocket.send(greeting)
- print(f"> {greeting}")
-
- start_server = websockets.serve(hello, "localhost", 8765)
-
- asyncio.get_event_loop().run_until_complete(start_server)
- asyncio.get_event_loop().run_forever()
- import asyncio
- import websockets
-
- async def hello():
- uri = "ws://localhost:8765"
- async with websockets.connect(uri) as websocket:
- name = input("What's your name? ")
- await websocket.send(name)
- print(f"> {name}")
-
- greeting = await websocket.recv()
- print(f"< {greeting}")
-
- asyncio.get_event_loop().run_until_complete(hello())
请注意,websockets库大多数的函数都是协程(coroutine)函数,需要使用 async/await 关键字。
协程(Coroutine)是一种比线程更加轻量级的存在。线程是操作系统的调度单位,而协程是程序调度的单位。也就是说,虽然两者都满足多任务的需要,但是协程的切换开销更小。
在Python中,协程函数被定义为一个包含有async def语句的函数:
- async def coroutine_function():
- # Your code here
- pass
'运行
协程函数不能直接执行,而需要通过event loop(事件循环)来调用。你可以像这样使用它:
- loop = asyncio.get_event_loop() # 获取事件循环
- loop.run_until_complete(coroutine_function()) # 调用协程函数
在协程函数内部,你可以使用await来挂起自身的执行以等待另一个I/O操作完成。
协程函数、async/await,以及asyncio库等都是Python3.5以后版本才引入的新特性,用以更好地处理异步I/O操作,特别是在需要高并发的web服务器和爬虫等应用中有着广泛的应用。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。