LUCIT-Systems-and-Development / unicorn-binance-websocket-api

A Python SDK by LUCIT to use the Binance Websocket API`s (com+testnet, com-margin+testnet, com-isolated_margin+testnet, com-futures+testnet, com-coin_futures, us, tr, dex/chain+testnet) in a simple, fast, flexible, robust and fully-featured way.
https://unicorn-binance-websocket-api.docs.lucit.tech/
Other
683 stars 165 forks source link

Doesn't work in 3.10 #291

Closed Rizhiy closed 2 years ago

Rizhiy commented 2 years ago

Version of this library.

unicorn-binance-websocket-api==1.41.0 unicorn-fy==0.12.2

Solution to Issue cannot be found in the documentation or other Issues and also occurs in the latest version of this library.

Hardware?

Local server/workstation

Operating System?

Linux

Python version?

Python3.10

Installed packages

aiohttp                       3.8.1
aiosignal                     1.2.0
aniso8601                     9.0.1
async-timeout                 4.0.2
attrs                         22.1.0
autoflake                     1.5.3
backtrader                    1.9.76.123
bayesian-optimization         1.2.0
bidict                        0.22.0
black                         22.8.0
certifi                       2022.6.15
charset-normalizer            2.1.1
cheroot                       8.6.0
click                         8.1.3
colorama                      0.4.5
cycler                        0.11.0
dateparser                    1.1.1
Deprecated                    1.2.13
Flask                         2.2.2
Flask-RESTful                 0.3.9
fonttools                     4.37.1
frozenlist                    1.3.1
idna                          3.3
iniconfig                     1.1.1
isort                         5.10.1
itsdangerous                  2.1.2
jaraco.functools              3.5.1
jedi                          0.18.1
Jinja2                        3.1.2
joblib                        1.1.0
kiwisolver                    1.4.4
MarkupSafe                    2.1.1
matplotlib                    3.5.3
more-itertools                8.14.0
mplfinance                    0.12.9b1
multidict                     6.0.2
mypy-extensions               0.4.3
nodeenv                       1.7.0
numpy                         1.23.3
packaging                     21.3
pandas                        1.4.4
parso                         0.8.3
pathspec                      0.10.1
Pillow                        9.2.0
pip                           22.1.2
platformdirs                  2.5.2
pluggy                        1.0.0
psutil                        5.9.2
pudb                          2022.1.2
py                            1.11.0
pyflakes                      2.5.0
Pygments                      2.13.0
pyparsing                     3.0.9
pyright                       1.1.270
pytest                        7.1.3
python-binance                1.0.16
python-dateutil               2.8.2
pytz                          2022.2.1
pytz-deprecation-shim         0.1.0.post0
redis                         4.3.4
regex                         2022.3.2
requests                      2.28.1
scikit-learn                  1.1.2
scipy                         1.9.1
setuptools                    63.4.1
six                           1.16.0
threadpoolctl                 3.1.0
toml                          0.10.2
tomli                         2.0.1
tqdm                          4.64.1
tzdata                        2022.2
tzlocal                       4.2
ujson                         5.4.0
unicorn-binance-websocket-api 1.41.0
unicorn-fy                    0.12.2
urllib3                       1.26.12
urwid                         2.1.2
urwid-readline                0.13
websocket-client              1.4.1
websockets                    9.1
Werkzeug                      2.2.2
wheel                         0.37.1
wrapt                         1.14.1
yarl                          1.8.1

Logging output

import unicorn_binance_websocket_api

ubwa = unicorn_binance_websocket_api.BinanceWebSocketApiManager(exchange="binance.com")
ubwa.create_stream(["trade"], ["btcusdt"])
while True:
    oldest_data_from_stream_buffer = ubwa.pop_stream_data_from_stream_buffer()
    if oldest_data_from_stream_buffer:
        print(oldest_data_from_stream_buffer)

Processing method?

process_stream_data

Used endpoint?

binance.com

Issue

Exception in thread _create_stream_thread: stream_id=c4f9acc5ecdf-f502-7cff-6d43-d9f88ff6, time=1663998042.0248468: Traceback (most recent call last): File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/threading.py", line 1009, in _bootstrap_inner self.run() File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/threading.py", line 946, in run self._target(self._args, self._kwargs) File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/site-packages/unicorn_binance_websocket_api/manager.py", line 529, in _create_stream_thread loop.run_until_complete(socket.start_socket()) File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete return future.result() File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/site-packages/unicorn_binance_websocket_api/sockets.py", line 67, in start_socket async with BinanceWebSocketApiConnection(self.manager, File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/site-packages/unicorn_binance_websocket_api/connection.py", line 138, in aenter self.manager.websocket_list[self.stream_id] = await self._conn.aenter() File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/site-packages/websockets/legacy/client.py", line 604, in aenter return await self File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/site-packages/websockets/legacy/client.py", line 622, in __await_impl transport, protocol = await self._create_connection() File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/asyncio/base_events.py", line 1089, in create_connection transport, protocol = await self._create_connection_transport( File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/asyncio/base_events.py", line 1107, in _create_connection_transport protocol = protocol_factory() File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/site-packages/websockets/legacy/client.py", line 160, in init super().init__(kwargs) File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/site-packages/websockets/legacy/protocol.py", line 154, in init self._drain_lock = asyncio.Lock( File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/asyncio/locks.py", line 78, in init super().init(loop=loop) File "/home/rizhiy/miniconda3/envs/binance-test/lib/python3.10/asyncio/mixins.py", line 17, in init raise TypeError( TypeError: As of 3.10, the loop* parameter was removed from Lock() since it is no longer necessary

Rizhiy commented 2 years ago

NVM, websockets was old version.