基本的上下文管理器

需要定义:

class ContextM:
	def __enter__():
		dosomethings()
	
	def __exit__():
		dosometings()
		
class AsyncContextM:
	async def __aenter__():
		await dosometings()
	
	async def __aexit__():
		await dosometings()

调用时使用with ContextM()或async with AsyncContextM

ContextManager

Python内置的一个很方便的生成上下文管理器的装饰器

from contextlib import contextmanager, asynccontextmanager

@contextmanager
def context():
	dosomethings_like_enter()
	yield
	dosomethings_like_exit()

@asynccontextmanager
async def async_context():
	await dosometings_like_aenter()
	yield
	await dosometings_like_aexit()

以同样的方式调用即可