CCXT量化交易组件在使用代理+async异步时,出现问题解决

问题表现:

首先是异步过程不报异常,但是会卡住,代码无法继续,跟踪代码一直停在ccxt内部的

await self.load_markets()

搞了很久没解决,尝试写个简单的写法看看:

async def judge_bill_filled(symbol):
    account = get_account()

    orders = await account.fetch_orders_by_states('filled', symbol)

asyncio.get_event_loop().run_until_complete(market.judge_bill_filled('UMA/USDT'))

依然报错:

<xxxx> requires to release all resources with an explicit call to the .close() coroutine

按照外网上方案,仍然未解决。

无意中跟踪代码到Python37\Lib\site-packages\ccxt\async_support\base\exchange.py中的fetch:

async with session_method(yarl.URL(url, encoded=True),
                          data=encoded_body,
                          headers=request_headers,
                          timeout=(self.timeout / 1000),
                          proxy=self.aiohttp_proxy) as response:

其中看到 proxy=self.aiohttp_proxy,明白了:

异步和同步时设置代理不一样,需要这样:

account.aiohttp_proxy = ‘http://ip:port'

而同步时这样设置代理: account.proxies = { 'http': 'http://ip:port' }

真坑!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值