Created
February 13, 2019 08:03
-
-
Save gusutabopb/361134dd1b1a1ec1ca6eb4033e529b96 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import aiohttp" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 先物は系は省略\n", | |
"all_channels = [\n", | |
" 'lightning_board_BCH_BTC',\n", | |
" 'lightning_board_BTC_EUR',\n", | |
" 'lightning_board_BTC_JPY',\n", | |
" 'lightning_board_BTC_USD',\n", | |
" 'lightning_board_ETH_BTC',\n", | |
" 'lightning_board_FX_BTC_JPY',\n", | |
" 'lightning_board_snapshot_BCH_BTC',\n", | |
" 'lightning_board_snapshot_BTC_EUR',\n", | |
" 'lightning_board_snapshot_BTC_JPY',\n", | |
" 'lightning_board_snapshot_BTC_USD',\n", | |
" 'lightning_board_snapshot_ETH_BTC',\n", | |
" 'lightning_board_snapshot_FX_BTC_JPY',\n", | |
" 'lightning_executions_BCH_BTC',\n", | |
" 'lightning_executions_BTC_EUR',\n", | |
" 'lightning_executions_BTC_JPY',\n", | |
" 'lightning_executions_BTC_USD',\n", | |
" 'lightning_executions_ETH_BTC',\n", | |
" 'lightning_executions_FX_BTC_JPY',\n", | |
" 'lightning_ticker_BCH_BTC',\n", | |
" 'lightning_ticker_BTC_EUR',\n", | |
" 'lightning_ticker_BTC_JPY',\n", | |
" 'lightning_ticker_BTC_USD',\n", | |
" 'lightning_ticker_ETH_BTC',\n", | |
" 'lightning_ticker_FX_BTC_JPY',\n", | |
"]\n", | |
"ch_codes = {ch: i+1 for i, ch in enumerate(all_channels)}" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"seen = set()\n", | |
"stop = False" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"async def connect(channels=None):\n", | |
" channels = channels or all_channels\n", | |
" url = 'wss://ws.lightstream.bitflyer.com/json-rpc'\n", | |
" async with aiohttp.ClientSession() as client:\n", | |
" async with client.ws_connect(url) as ws:\n", | |
" for ch in channels:\n", | |
" print(ch)\n", | |
" await ws.send_json({\n", | |
" \"method\": \"subscribe\",\n", | |
" \"params\": {\"channel\": ch}\n", | |
" })\n", | |
" async for msg in ws:\n", | |
" seen.add(msg.json()['params']['channel'])\n", | |
" if stop:\n", | |
" break\n", | |
" print('closed connection')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"async def show():\n", | |
" for _ in range(10):\n", | |
" await asyncio.sleep(3)\n", | |
" codes = sorted([ch_codes[ch] for ch in seen])\n", | |
" print(f'{len(codes)} ({max(codes) if codes else None}) | {codes}')\n", | |
" print('-'*50)\n", | |
" global stop\n", | |
" stop = True" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"普通にやろうとすると、チャンネル20番までしか繋がらない" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"lightning_board_BCH_BTC\n", | |
"lightning_board_BTC_EUR\n", | |
"lightning_board_BTC_JPY\n", | |
"lightning_board_BTC_USD\n", | |
"lightning_board_ETH_BTC\n", | |
"lightning_board_FX_BTC_JPY\n", | |
"lightning_board_snapshot_BCH_BTC\n", | |
"lightning_board_snapshot_BTC_EUR\n", | |
"lightning_board_snapshot_BTC_JPY\n", | |
"lightning_board_snapshot_BTC_USD\n", | |
"lightning_board_snapshot_ETH_BTC\n", | |
"lightning_board_snapshot_FX_BTC_JPY\n", | |
"lightning_executions_BCH_BTC\n", | |
"lightning_executions_BTC_EUR\n", | |
"lightning_executions_BTC_JPY\n", | |
"lightning_executions_BTC_USD\n", | |
"lightning_executions_ETH_BTC\n", | |
"lightning_executions_FX_BTC_JPY\n", | |
"lightning_ticker_BCH_BTC\n", | |
"lightning_ticker_BTC_EUR\n", | |
"lightning_ticker_BTC_JPY\n", | |
"lightning_ticker_BTC_USD\n", | |
"lightning_ticker_ETH_BTC\n", | |
"lightning_ticker_FX_BTC_JPY\n", | |
"11 (20) | [2, 3, 5, 6, 7, 8, 9, 10, 11, 18, 20]\n", | |
"--------------------------------------------------\n", | |
"12 (20) | [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 18, 20]\n", | |
"--------------------------------------------------\n", | |
"12 (20) | [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 18, 20]\n", | |
"--------------------------------------------------\n", | |
"12 (20) | [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 18, 20]\n", | |
"--------------------------------------------------\n", | |
"12 (20) | [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 18, 20]\n", | |
"--------------------------------------------------\n", | |
"13 (20) | [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 20]\n", | |
"--------------------------------------------------\n", | |
"13 (20) | [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 20]\n", | |
"--------------------------------------------------\n", | |
"15 (20) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 19, 20]\n", | |
"--------------------------------------------------\n", | |
"15 (20) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 19, 20]\n", | |
"--------------------------------------------------\n", | |
"15 (20) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 19, 20]\n", | |
"--------------------------------------------------\n", | |
"closed connection\n" | |
] | |
} | |
], | |
"source": [ | |
"seen.clear()\n", | |
"stop = False\n", | |
"_ = await asyncio.gather(\n", | |
" connect(all_channels),\n", | |
" show()\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"ところが、接続を複数に分けると無事データ取得可能。。。" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"lightning_board_BCH_BTC\n", | |
"lightning_board_BTC_EUR\n", | |
"lightning_board_BTC_JPY\n", | |
"lightning_board_BTC_USD\n", | |
"lightning_board_ETH_BTC\n", | |
"lightning_board_FX_BTC_JPY\n", | |
"lightning_board_snapshot_BCH_BTC\n", | |
"lightning_board_snapshot_BTC_EUR\n", | |
"lightning_board_snapshot_BTC_JPY\n", | |
"lightning_board_snapshot_BTC_USD\n", | |
"lightning_ticker_BTC_JPY\n", | |
"lightning_ticker_BTC_USD\n", | |
"lightning_ticker_ETH_BTC\n", | |
"lightning_ticker_FX_BTC_JPY\n", | |
"lightning_board_snapshot_ETH_BTC\n", | |
"lightning_board_snapshot_FX_BTC_JPY\n", | |
"lightning_executions_BCH_BTC\n", | |
"lightning_executions_BTC_EUR\n", | |
"lightning_executions_BTC_JPY\n", | |
"lightning_executions_BTC_USD\n", | |
"lightning_executions_ETH_BTC\n", | |
"lightning_executions_FX_BTC_JPY\n", | |
"lightning_ticker_BCH_BTC\n", | |
"lightning_ticker_BTC_EUR\n", | |
"15 (24) | [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 18, 20, 21, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"20 (24) | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 21, 22, 23, 24]\n", | |
"--------------------------------------------------\n", | |
"closed connection\n", | |
"closed connection\n", | |
"closed connection\n" | |
] | |
} | |
], | |
"source": [ | |
"seen.clear()\n", | |
"stop = False\n", | |
"_ = await asyncio.gather(\n", | |
" connect(all_channels[:10]),\n", | |
" connect(all_channels[10:20]),\n", | |
" connect(all_channels[20:]),\n", | |
" show()\n", | |
")" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.7.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment