やあ、
まず、あなたが行ったこの素晴らしい仕事に感謝します。 第二に、私の問題は以下のコードについてです。 私は常に「閉じられていないクライアントセッションclient_session:
timeout = time.time() + 60*60*8
async def bitfinex():
bitfinex = ccxt.bitfinex()
return await bitfinex.fetch_ticker()
while True:
if time.time() > timeout:
break
try:
bitfinexratiolast = float(asyncio.get_event_loop().run_until_complete(ccxt.bitfinex().fetch_ticker('ETH/BTC'))['last'])
bitfinexbtctrylast = float(asyncio.get_event_loop().run_until_complete(ccxt.bitfinex().fetch_ticker('BTC/USD'))['last'])
except ccxt.DDoSProtection:
print('ddos')
continue
print(bitfinexratiolast)
print(bitfinexbtctrylast)
すべての行でccxt.bitfinex()
を実行する必要はありません。 もっと基本的なPythonを学ぶことをお勧めします。 クラスとオブジェクトインスタンスの操作に焦点を合わせます。
このコードは機能するはずです:
import asyncio
import ccxt.async as ccxt
async def run():
bitfinex = ccxt.bitfinex({'enableRateLimit': True})
while True:
try:
bitfinexratio = await bitfinex.fetch_ticker('ETH/BTC')
bitfinexbtctry = await bitfinex.fetch_ticker('BTC/USD')
print('----------------------------------------')
datetimestring = bitfinex.iso8601(bitfinex.milliseconds())
print(datetimestring, bitfinexratio['last'], bitfinexbtctry['last'])
except Exception as e:
print(type(e).__name__ + ' ' + str(e))
asyncio.get_event_loop().run_until_complete(run())
もっと:
どうもありがとう! 今は機能しています。基本的なPythonコースも見ていきます(y)
ただし、これははるかに優れています:
import asyncio
import ccxt.async as ccxt
async def run():
bitfinex = ccxt.bitfinex({'enableRateLimit': True})
while True:
try:
tickers = await bitfinex.fetch_tickers()
bitfinexratio = tickers['ETH/BTC']
bitfinexbtctry = tickers['BTC/USD']
print('----------------------------------------')
datetimestring = bitfinex.iso8601(bitfinex.milliseconds())
print(datetimestring, bitfinexratio['last'], bitfinexbtctry['last'])
except Exception as e:
print(type(e).__name__ + ' ' + str(e))
asyncio.get_event_loop().run_until_complete(run())
複数のティッカーが必要な場合は、上記のようにすべてのティッカーを一度に取得することをお勧めします。
最も参考になるコメント
すべての行で
ccxt.bitfinex()
を実行する必要はありません。 もっと基本的なPythonを学ぶことをお勧めします。 クラスとオブジェクトインスタンスの操作に焦点を合わせます。このコードは機能するはずです:
もっと: