Skip to content

Commit 7196367

Browse files
committed
handling RPCs where batch requests are not allowed at all by executing them as single requests.
1 parent 52e6a65 commit 7196367

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

IceCreamSwapWeb3/BatchRetryMiddleware.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class BatchRetryMiddleware(Web3Middleware):
1010

1111
def wrap_make_batch_request(self, make_batch_request):
1212
def middleware(requests_info) -> list:
13+
if self._w3.rpc_batch_max_size == 0:
14+
# RPC does not support batch requests at all, splitting batch into single, non batch, requests
15+
return [make_batch_request.__self__.make_request(method, params) for method, params in requests_info]
16+
1317
if len(requests_info) > self._w3.rpc_batch_max_size:
1418
response = []
1519
for start in range(0, len(requests_info), self._w3.rpc_batch_max_size):

IceCreamSwapWeb3/Web3Advanced.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def _construct_provider(node_url):
9292
def start_multicall(self) -> MultiCall:
9393
return MultiCall(w3=self)
9494

95-
def _find_max_filter_range(self):
95+
def _find_max_filter_range(self) -> int:
9696
current_block = self.eth.block_number
9797
for filter_range in self.FILTER_RANGES_TO_TRY:
9898
try:
@@ -110,7 +110,7 @@ def _find_max_filter_range(self):
110110
print(f"Can not use eth_getLogs with RPC {self.node_url}")
111111
return 0
112112

113-
def _find_max_batch_size(self):
113+
def _find_max_batch_size(self) -> int:
114114
for batch_size in self.BATCH_SIZES_TO_TRY:
115115
try:
116116
with self.batch_requests() as batch:
@@ -121,7 +121,8 @@ def _find_max_batch_size(self):
121121
return batch_size
122122
except Exception:
123123
pass
124-
raise
124+
print(f"Can not use batch requests with RPC {self.node_url}")
125+
return 0
125126

126127
def _check_revert_reason_available(self):
127128
with files("IceCreamSwapWeb3").joinpath("./abi/RevertTester.abi").open('r') as f:

0 commit comments

Comments
 (0)