gpt4 book ai didi

python - Websocket 到 Python 中的可用数据 - 从 GDAX websocket feed 获取价格

转载 作者:太空宇宙 更新时间:2023-11-04 04:52:06 26 4
gpt4 key购买 nike

我正在尝试获取要使用的最新价格数据,使用/ticker 端点上的轮询很容易,即

rawticker = requests.get('https://api.gdax.com/products/BTC-EUR/ticker')
json_data = json.loads(rawticker.text)
price = json_data['price']

但是 GDAX API 不鼓励轮询。我怎样才能使用 websocket 获得相同的信息。我怎样才能让下面的代码只运行一次,然后提取价格信息。

from websocket import WebSocketApp
from json import dumps, loads
from pprint import pprint

URL = "wss://ws-feed.gdax.com"

def on_message(_, message):
"""Callback executed when a message comes.
Positional argument:
message -- The message itself (string)
"""
pprint(loads(message))
print

def on_open(socket):
"""Callback executed at socket opening.
Keyword argument:
socket -- The websocket itself
"""
params = {
"type": "subscribe",
"channels": [{"name": "ticker", "product_ids": ["BTC-EUR"]}]
}
socket.send(dumps(params))

def main():
"""Main function."""
ws = WebSocketApp(URL, on_open=on_open, on_message=on_message)
ws.run_forever()

if __name__ == '__main__':
main()

感谢您的帮助。

最佳答案

当您想要实时更新时,不鼓励拉取。在这种情况下,建议使用 Web Sockets。但是,在您的情况下,运行一次代码并退出,可以使用拉取端点。

无论如何都要回答你的问题。 on_message 的第一个参数是 WebSocketApp 您可以简单地添加此行以在收到第一条消息后将其关闭。

def on_message(ws, message):
"""Callback executed when a message comes.
Positional argument:
message -- The message itself (string)
"""
pprint(loads(message))
ws.close()

提示

Requests 库有内置的 .json(),你可以直接在 .get() 返回上使用

import requests
rawticker = requests.get('https://api.gdax.com/products/BTC-EUR/ticker').json()
price = rawticker['price']
print(price)

关于python - Websocket 到 Python 中的可用数据 - 从 GDAX websocket feed 获取价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com