iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
Software Development

Python之虛擬貨幣API實作系列 第 8

Day8 開始實作-WebSocket獲取最新價格

  • 分享至 

  • xImage
  •  

導入我們需要的websocket的模組BinanceSocketManager,和需要時間延遲避免資料更新過快的模組time,以及asyncio模組,除了可使用asyncio.get_event_loop取得事件迴圈,透過run_until_complete執行指定的協程,這會阻斷直到指定的(主)協程完成(也就是執行完該協程函式定義的流程),想嘗試使用更多webSocket用法的可以參考這篇

像這樣創建管理器,傳遞一個AsyncClient。

import asyncio
import time
from binance import AsyncClient, BinanceSocketManager


async def main():
    client = await AsyncClient.create()
    bm = BinanceSocketManager(client, user_timeout=60)
    ts = bm.trade_socket('BTCUSDT')

    async with ts as tscm:
        while True:
            time.sleep(1)
            res = await tscm.recv()
            print('BTCUSDT當前價格:'+res["p"])

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main()) 
    

為webSocket連接設置自定義超時

bm = BinanceSocketManager(client, user_timeout=60)

由於res = await tscm.recv()會回傳很多其他有關BTCUSDT的各種數值,這邊我就只拿出他的價格來做示範,也就是res["p"],這邊可以看到有用到time.sleep(1)來讓他每秒為間隔來顯示當時價格。


上一篇
Day7 開始實作-查詢資訊
下一篇
Day9 開始實作-CSV格式儲存虛擬貨幣資料
系列文
Python之虛擬貨幣API實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言