Skip to content

Commit c29a5b9

Browse files
2.1.48
🔧 fix(exch_srv): Handle `RateLimitReached` exception in `OpenClientConnection` gracefully ♻️ chore(requirements): Update `crypto-ws-api` to version 2.1.8 ♻️ chore(requirements): Upgrade `aiohttp` to version 3.13.4 📝 docs(changelog): Update changelog for version 2.1.48
1 parent 1a904ee commit c29a5b9

5 files changed

Lines changed: 21 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 2.1.48 2026-04-03
2+
🔧 fix(exch_srv): Handle `RateLimitReached` exception in `OpenClientConnection` gracefully
3+
♻️ chore(requirements): Update `crypto-ws-api` to version 2.1.8
4+
♻️ chore(requirements): Upgrade `aiohttp` to version 3.13.4
5+
16
## 2.1.47 2026-03-08
27
♻️ chore(version): Bump **crypto-ws-api** to 2.1.7 and update version to 2.1.47 in **CHANGELOG.md**
38

exchanges_wrapper/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
__contact__ = "https://github.com/DogsTailFarmer"
1313
__email__ = "jerry.fedorenko@yahoo.com"
1414
__credits__ = ["https://github.com/DanyaSWorlD"]
15-
__version__ = "2.1.47"
15+
__version__ = "2.1.48"
1616

1717
from pathlib import Path
1818
import shutil

exchanges_wrapper/exch_srv.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
OnTickerUpdateResponse,
4040
FetchOrderBookResponse,
4141
)
42+
from exchanges_wrapper.errors import RateLimitReached
4243
#
4344
HEARTBEAT = 1 # sec
4445
MAX_QUEUE_SIZE = 100
@@ -137,6 +138,16 @@ async def open_client_connection(self, request: mr.OpenClientConnectionRequest)
137138
await OpenClient.get_client(client_id).client.http.close_session()
138139
OpenClient.remove_client(client_id)
139140
raise GRPCError(status=Status.UNAVAILABLE, message=f"'{open_client.name}' timeout error")
141+
except RateLimitReached:
142+
await OpenClient.get_client(client_id).client.http.close_session()
143+
OpenClient.remove_client(client_id)
144+
logger.warning(f"OpenClientConnection LOADS for {open_client.name}: {RateLimitReached.message},"
145+
f" trying some later")
146+
await asyncio.sleep(HEARTBEAT * 60)
147+
raise GRPCError(
148+
status=Status.RESOURCE_EXHAUSTED,
149+
message=f"'{open_client.name}: {RateLimitReached.message}'"
150+
)
140151
except Exception as ex:
141152
logger.warning(f"OpenClientConnection for '{open_client.name}' exception: {ex}")
142153
logger.debug(f"Exception traceback: {traceback.format_exc()}")

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ dynamic = ["version", "description"]
2020
requires-python = ">=3.10"
2121

2222
dependencies = [
23-
"crypto-ws-api==2.1.7",
23+
"crypto-ws-api==2.1.8",
2424
"pyotp==2.9.0",
2525
"simplejson==3.20.2",
26-
"aiohttp~=3.13.3",
26+
"aiohttp~=3.13.4",
2727
"expiringdict~=1.2.2",
2828
"betterproto==2.0.0b7",
2929
"grpclib~=0.4.8"

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
crypto-ws-api==2.1.7
1+
crypto-ws-api==2.1.8
22
pyotp==2.9.0
33
simplejson==3.20.2
4-
aiohttp~=3.13.3
4+
aiohttp~=3.13.4
55
expiringdict~=1.2.2
66
betterproto==2.0.0b7
77
grpclib~=0.4.8

0 commit comments

Comments
 (0)