使用 Python 通过 WebSockets 访问 API
Posted
技术标签:
【中文标题】使用 Python 通过 WebSockets 访问 API【英文标题】:Accessing API via WebSockets using Python 【发布时间】:2016-01-30 18:33:18 【问题描述】:业余爱好者在这里从事周末项目。
我希望访问此处提供的公开 API:https://api.coinsecure.in/ 它为我们提供了比特币交易数据——API 是通过我不熟悉的 websockets 实现的。
Websocket URI 是 wss://coinsecure.in/websocket 我想测试的方法是:“method”:“recentbuytrades”
我可以使用 Python 中的“websocket-client”访问 WebScocket API,如下所示:https://pypi.python.org/pypi/websocket-client/
但不幸的是,我无法弄清楚如何检索特定方法的数据 - "method": "recentbuytrades"
非常感谢您在提取此特定方法的数据方面提供的任何指导。
最好, 瑞恩
[编辑] 我正在使用的当前代码是这样的:
from websocket import create_connection
ws = create_connection("wss://coinsecure.in/websocket")
result = ws.recv()
print ("Received '%s'" % result)
ws.close()
【问题讨论】:
你能贴出你目前用来连接websocket的代码吗? 我已经编辑了我的查询并添加了我当前使用的代码 只需执行 ws.send("method": "recentbuytrades") 并实现 on_message(...) 即可接收此消息的响应。他们必须展示一些例子。当然,ws 是一个 Connection 实例,所以看看你可以覆盖的方法。 tornado 还有一个干净的 websocket 客户端实现,以及其他有用的助手。因此,如果您想让生活变得轻松,请改用龙卷风。我都用过,但我更喜欢龙卷风来做这些事情。 哦,确定。以前从未使用过龙卷风。会试一试。感谢您的帮助:) 【参考方案1】:试试这个:
from websocket import create_connection
ws = create_connection("wss://coinsecure.in/websocket")
ws.send('"method": "recentbuytrades"')
while True:
result = ws.recv()
print ("Received '%s'" % result)
ws.close()
注意ws.send()
方法,它告诉API 你想要什么。接下来,while True
无限循环——WebSockets 是无限连接;信息通常不止一次地通过它们发送。你会从服务器(看起来像 JSON)这里得到一堆信息(一个“框架”),处理它,然后等待下一个信息。
看起来 API 会向您发送您不一定想要的数据。如果框架不包含 recentbuytrades
键,您可能需要将其丢弃。
【讨论】:
以上是关于使用 Python 通过 WebSockets 访问 API的主要内容,如果未能解决你的问题,请参考以下文章
通过 Websockets 从 Python Flask 服务器连续向客户端发送数据
Azure 认知服务 - 使用 python 和 websockets 自定义语音
将 JavaScript 通过 websockets 发送的最后一个字符剥离到 Python
Python websockets 服务器和 websockets 客户端在运行这两个任务时使用 asyncio 断言错误