如何在Binance中为多个API密钥异步创建订单?
多用户异步创建Binance订单解决方案
要实现多用户异步创建订单,你可以使用python-binance库提供的AsyncClient(异步客户端)结合asyncio来并发执行订单请求,避免同步执行的耗时累加问题。以下是完整实现方案:
步骤1:确保依赖库安装
先确保你安装了最新版的python-binance:
pip install python-binance --upgrade
步骤2:异步实现代码
import asyncio from binance import AsyncClient from binance.enums import * # 定义多用户的订单数据:每个元素包含用户API密钥和订单参数 user_order_list = [ { "api_key": "user1_api_key", "api_secret": "user1_api_secret", "order_params": { "symbol": "BTCUSDT", "side": SIDE_SELL, "type": ORDER_TYPE_LIMIT, "timeInForce": TIME_IN_FORCE_GTC, "quantity": 0.001, "price": "16000" } }, { "api_key": "user2_api_key", "api_secret": "user2_api_secret", "order_params": { "symbol": "ETHUSDT", "side": SIDE_BUY, "type": ORDER_TYPE_MARKET, "quantity": 0.01 } }, # 可以继续添加更多用户的订单数据 ] async def create_single_user_order(user_data): """异步处理单个用户的订单创建""" api_key = user_data["api_key"] api_secret = user_data["api_secret"] order_params = user_data["order_params"] try: # 初始化异步客户端 client = await AsyncClient.create(api_key, api_secret) # 创建测试订单(正式环境替换为create_order) order_result = await client.create_test_order(**order_params) print(f"用户订单创建成功: {order_result}") return order_result except Exception as e: print(f"用户订单创建失败: {str(e)}") return None finally: # 关闭客户端连接 await client.close_connection() async def main(): # 并发执行所有用户的订单任务 tasks = [create_single_user_order(user) for user in user_order_list] results = await asyncio.gather(*tasks) # 处理所有结果(可选) print("\n所有订单任务完成,结果汇总:") for idx, res in enumerate(results): print(f"用户{idx+1}: {res}") if __name__ == "__main__": asyncio.run(main())
关键说明
- 异步客户端AsyncClient:python-binance专门提供了异步版本的客户端,所有API方法都支持
await调用,适合并发场景。 - asyncio.gather:将多个异步任务打包并发执行,所有任务几乎同时发起请求,总耗时接近单请求的响应时间(而非累加时间)。
- 错误隔离:每个用户的订单请求在独立的异步任务中执行,单个用户的请求失败不会影响其他用户的任务执行。
- 资源清理:每个任务完成后都会关闭客户端连接,避免资源泄漏。
替换为正式订单
如果需要创建真实订单,只需将代码中的create_test_order替换为create_order即可,注意调整订单参数符合Binance的交易规则。
内容的提问来源于stack exchange,提问作者AmirX
相关产品推荐
相关产品推荐

