7
7
from web3 .main import get_default_modules
8
8
from web3 .middleware import ExtraDataToPOAMiddleware
9
9
10
+ from .BatchRetryMiddleware import BatchRetryMiddleware
10
11
from .EthAdvanced import EthAdvanced
11
12
from .Multicall import MultiCall
12
13
from .Web3ErrorHandlerPatch import patch_error_formatters
@@ -37,11 +38,13 @@ def __init__(
37
38
node_url : str ,
38
39
should_retry : bool = True ,
39
40
unstable_blocks : int = int (os .getenv ("UNSTABLE_BLOCKS" , 5 )), # not all nodes might have latest n blocks, these are seen as unstable
41
+ rpc_batch_max_size : int = int (os .getenv ("RPC_BATCH_MAX_SIZE" , 500 )), # split batch requests up if they are larger
40
42
):
41
43
patch_error_formatters ()
42
44
self .node_url = node_url
43
45
self .should_retry = should_retry
44
46
self .unstable_blocks = unstable_blocks
47
+ self .rpc_batch_max_size = rpc_batch_max_size
45
48
46
49
provider = self ._construct_provider (node_url = self .node_url )
47
50
@@ -51,6 +54,7 @@ def __init__(
51
54
52
55
super ().__init__ (provider = provider , modules = modules )
53
56
57
+ self .middleware_onion .inject (BatchRetryMiddleware , layer = 0 , name = "batch_retry" ) # split and retry batch requests
54
58
self .middleware_onion .inject (ExtraDataToPOAMiddleware , layer = 0 , name = "poa" ) # required for pos chains
55
59
56
60
self .latest_seen_block = self .eth .get_block_number (ignore_latest_seen_block = True )
0 commit comments