CCXT poloniex实例作为类属性调用失效 函数局部变量可正常运行咨询
问题原因排查
1. API凭证配置遗漏(最高概率)
你贴出的类初始化代码仅创建了ccxt.poloniex()实例,未给实例赋值apiKey和secret鉴权凭证,而你局部变量的写法里明确完成了凭证赋值。fetch_deposit_address属于需要鉴权的私有接口,没有合法凭证自然会调用失败。
正确初始化示例:
def __init__(self, api_key, api_secret): self.__poloniex = ccxt.poloniex() self.__poloniex.apiKey = api_key self.__poloniex.secret = api_secret # 可选配置:开启请求限流避免触发平台频率限制 self.__poloniex.enableRateLimit = True
2. Python私有属性名称改写特性导致的调用异常
Python中双下划线__开头的类属性会触发自动名称改写(name mangling),改写规则为_类名__属性名:
- 类内部方法直接调用
self.__poloniex属于合法操作,不会有问题 - 如果是在类外部直接访问
实例.__poloniex,会直接提示属性不存在 - 如果是在子类中调用
self.__poloniex,Python会改写为_子类名__poloniex,无法匹配父类定义的_父类名__poloniex属性
如果你的调用场景符合后两种情况,可以把双下划线改为单下划线_poloniex(Python约定的私有属性,不会触发名称改写),或者直接使用公共属性即可。
3. CCXT实例初始化配置缺失
排除前两个问题后,可排查CCXT相关的配置问题:
- 局部变量创建实例时可能配置了代理、超时等特殊参数,类初始化时未同步添加相关配置,导致网络请求失败
- 如果类实例存在多线程/多协程并发调用的场景,CCXT实例本身不是线程安全的,并发调用会导致内部状态异常,触发接口请求失败
结论
该问题基本不属于CCXT库本身的问题,绝大多数情况是配置遗漏或者Python私有属性语法特性导致的,按上述顺序排查即可解决问题。
内容的提问来源于stack exchange,提问作者AndreaVan
相关产品推荐
相关产品推荐

