import asyncio import logging from paste.core import aio_pool from paste.core.logging import echo_log from paste.web.decorators import route from paste.web.handler import RequestHandler @route("/background") class HelloHandler(RequestHandler): """ 演示一个请求,其中包含异步后台任务。 """ async def background_task(self): """ 模拟后台异步处理任务:仅做延时,代表执行数据库写入、消息推送、文件处理等。 """ try: for i in range(10): echo_log(f"后台任务开始执行-{i}...") await asyncio.sleep(0.8) # 模拟耗时操作 echo_log("后台任务完成:模拟处理完毕。") except Exception as e: echo_log(f"后台任务异常: {e}", level=logging.ERROR) async def get(self): """ 常规请求,先执行后台任务,再响应前端,但是不等待任务完成。 """ echo_log(f"Received request!") await aio_pool.run_background_task(self.background_task()) self.response_ok(message="Response from paste!")