Skip to content

Commit 6ea9aec

Browse files
committed
FIX: Reduce symbol subscription batch size
1 parent c2814b3 commit 6ea9aec

3 files changed

Lines changed: 22 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 0.22.2 - TBD
4+
5+
#### Bug fixes
6+
- Fixed issue where a large unreadable symbol subscription message could be sent
7+
38
## 0.22.1 - 2023-10-24
49

510
#### Bug fixes

databento/live/protocol.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from collections.abc import Iterable
66
from functools import singledispatchmethod
77
from numbers import Number
8+
from typing import Final
89

910
import databento_dbn
1011
from databento_dbn import Schema
@@ -30,7 +31,8 @@
3031
from databento.live.gateway import SubscriptionRequest
3132

3233

33-
RECV_BUFFER_SIZE: int = 64 * 2**10 # 64kb
34+
RECV_BUFFER_SIZE: Final = 64 * 2**10 # 64kb
35+
SYMBOL_LIST_BATCH_SIZE: Final = 64
3436

3537
logger = logging.getLogger(__name__)
3638

@@ -278,7 +280,7 @@ def subscribe(
278280
stype_in_valid = validate_enum(stype_in, SType, "stype_in")
279281
symbols_list = optional_symbols_list_to_list(symbols, stype_in_valid)
280282

281-
for batch in chunk(symbols_list, 128):
283+
for batch in chunk(symbols_list, SYMBOL_LIST_BATCH_SIZE):
282284
batch_str = ",".join(batch)
283285
message = SubscriptionRequest(
284286
schema=validate_enum(schema, Schema, "schema"),

tests/test_live_client.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -399,14 +399,24 @@ async def test_live_subscribe_large_symbol_list(
399399
first_message = mock_live_server.get_message_of_type(
400400
gateway.SubscriptionRequest,
401401
timeout=1,
402-
)
402+
).symbols.split(",")
403403

404404
second_message = mock_live_server.get_message_of_type(
405405
gateway.SubscriptionRequest,
406406
timeout=1,
407-
)
407+
).symbols.split(",")
408+
409+
third_message = mock_live_server.get_message_of_type(
410+
gateway.SubscriptionRequest,
411+
timeout=1,
412+
).symbols.split(",")
413+
414+
fourth_message = mock_live_server.get_message_of_type(
415+
gateway.SubscriptionRequest,
416+
timeout=1,
417+
).symbols.split(",")
408418

409-
reconstructed = first_message.symbols.split(",") + second_message.symbols.split(",")
419+
reconstructed = first_message + second_message + third_message + fourth_message
410420
assert reconstructed == large_symbol_list
411421

412422

0 commit comments

Comments
 (0)