@@ -43,6 +43,7 @@ def __init__(
4343 self .receipt_log_mapper = EthReceiptLogMapper ()
4444 self .marketplace_listing_mapper = OriginMarketplaceListingMapper ()
4545 self .shop_listing_mapper = OriginShopProductMapper ()
46+ self ._supports_eth_newFilter = True
4647
4748
4849 def _start (self ):
@@ -100,8 +101,18 @@ def _export_batch(self, block_number_batch):
100101 'fromBlock' : batch ['from_block' ],
101102 'toBlock' : batch ['to_block' ]
102103 }
103- event_filter = self .web3 .eth .filter (filter_params )
104- events = event_filter .get_all_entries ()
104+ if self ._supports_eth_newFilter :
105+ try :
106+ event_filter = self .web3 .eth .filter (filter_params )
107+ events = event_filter .get_all_entries ()
108+ except ValueError as e :
109+ if str (e ) == "{'code': -32000, 'message': 'the method is currently not implemented: eth_newFilter'}" :
110+ self ._supports_eth_newFilter = False
111+ events = self .web3 .eth .getLogs (filter_params )
112+ else :
113+ raise (e )
114+ else :
115+ events = self .web3 .eth .getLogs (filter_params )
105116 for event in events :
106117 log = self .receipt_log_mapper .web3_dict_to_receipt_log (event )
107118 listing , shop_products = self .event_extractor .extract_event_from_log (log , batch ['contract_version' ])
@@ -112,9 +123,10 @@ def _export_batch(self, block_number_batch):
112123 item = self .shop_listing_mapper .product_to_dict (product )
113124 self .shop_product_exporter .export_item (item )
114125
115- self .web3 .eth .uninstallFilter (event_filter .filter_id )
126+ if self ._supports_eth_newFilter :
127+ self .web3 .eth .uninstallFilter (event_filter .filter_id )
116128
117129 def _end (self ):
118130 self .batch_work_executor .shutdown ()
119131 self .marketplace_listing_exporter .close ()
120- self .shop_product_exporter .close ()
132+ self .shop_product_exporter .close ()
0 commit comments