Closed CurtMRosenbladWheeler closed 9 months ago
@CurtMRosenbladWheeler Thank you for the issue report. Can you please try to use BTC/USD
instead of BTCUSD
?
@hiohiohio, I tried following your suggestion, but unfortunately, I'm still encountering the same error.
@CurtMRosenbladWheeler hmmm. the below code works for me (Sorry, I am currently hitting the rate limit, so cannot try with your code). May I please ask you to provide actual logs of the error if possible?
from alpaca.data.live import CryptoDataStream
stream = CryptoDataStream(
api_key=API_KEY,
secret_key=API_SECRET,
)
symbol = "BTC/USD"
async def handler(data):
print(data)
stream.subscribe_quotes(handler, symbol)
stream.subscribe_trades(handler, symbol)
stream.run()
@hiohiohio I encountered the same error when I ran your code: data websocket error, restarting connection: server rejected WebSocket connection: HTTP 404.
To troubleshoot, I implemented my own code to make a request to wss://stream.data.alpaca.markets/v1beta3/crypto/us
, and it worked seamlessly without encountering any issues. Below is the code for reference:
import asyncio
import websockets
import json
from autotrader.configs.alpaca_settings import ALPACA_API_KEY, ALPACA_SECRET_KEY
async def connect_to_websocket():
uri = "wss://stream.data.alpaca.markets/v1beta3/crypto/us"
async with websockets.connect(uri) as websocket:
auth_data = {
"action": "auth",
"key": ALPACA_API_KEY,
"secret": ALPACA_SECRET_KEY
}
await websocket.send(json.dumps(auth_data))
subscribe_data = {
"action": "subscribe",
"trades": ["BTC/USD"],
"quotes": ["LTC/USD", "ETH/USD"],
"bars": ["BCH/USD"]
}
await websocket.send(json.dumps(subscribe_data))
async for message in websocket:
print(message)
asyncio.run(connect_to_websocket())
This code establishes a WebSocket connection without encountering the mentioned error. Please let me know if you have any insights into why the original code might be facing this issue.
@CurtMRosenbladWheeler thank you for the update and detailed info. Appreciate. It helps me a lot. Unfortunately, I still cannot reproduce the error you mentioned in my env. May I please ask you to provide the version of below libraries and python? I think the issue could be coming from library compatibility issues.
python
msgpack
pydantic
pydantic_core
websockets
Found a way to reproduce this and created a PR to fix. https://github.com/alpacahq/alpaca-py/pull/385
Hey everyone! I can't import alpaca.data.live. I've downloaded the alpaca-py. Please help me :)
Is there an existing issue for this?
Current Behavior
When executing the provided code snippet with the specified Alpaca API keys to stream live cryptocurrency quote data (BTCUSD), the following issue occurs: "data websocket error, restarting connection: server rejected WebSocket connection: HTTP 404."
Expected Behavior
The code should successfully establish a WebSocket connection to Alpaca's API for live cryptocurrency quote data (BTCUSD). Upon successful connection, the program should subscribe to quote updates and print the received data to the console using the quote_data_handler function. There should be no WebSocket errors, and the program should run without encountering HTTP 404 rejection from the server.
SDK Version I encountered this issue in
alpaca-py version: 0.13.3
Steps To Reproduce
Filled out the Steps to Reproduce section?
Anything else?
No response