如何异步运行Stripe的PaymentIntent.list接口 解决await赋值语法错误
问题解决方法
语法错误原因
你触发语法错误的核心原因是await关键字的位置写反了:await需要修饰整个异步调用表达式,必须放在赋值符号=的右侧,不能写在变量左侧,才会出现SyntaxError: cannot assign to await expression报错。
异步实现方案
Stripe Python SDK 从v2.30.0版本开始内置原生异步客户端,无需额外依赖,正确实现步骤如下:
- 初始化异步Stripe客户端,不要使用默认的同步全局客户端
import asyncio import stripe # 替换为你的Stripe API密钥 async_stripe = stripe.AsyncStripeClient(api_key="sk_xxxxxx")
- 调整异步调用写法,把
await放在方法调用前
async def fetch_payments(): # 正确写法:变量在左,await + 异步调用在右 payments = await async_stripe.PaymentIntent.list(limit=10000) return payments # 测试运行异步函数 if __name__ == "__main__": result = asyncio.run(fetch_payments()) print(result)
如果你使用的是不支持异步客户端的旧版本Stripe SDK,可以用sync_to_async工具包装原同步方法实现异步调用:
from asgiref.sync import sync_to_async import stripe stripe.api_key = "sk_xxxxxx" async def fetch_payments(): payments = await sync_to_async(stripe.PaymentIntent.list)(limit=10000) return payments
注意上述异步代码必须运行在异步上下文中,比如FastAPI/Starlette的异步路由、Django 3.1+的异步视图,或者通过asyncio.run主动启动异步事件循环。
内容的提问来源于stack exchange,提问作者Admia
相关产品推荐
相关产品推荐

