2

When I run the following code sometimes it executes successfully, but most of the time it raises a concurrent.futures._base.TimeoutError. What can I do to fix this?

Here is the code:

infura_url_ws = 'wss://mainnet.infura.io/ws/v3/MY-PROJECT-ID'
ws3 = Web3(Web3.WebsocketProvider(infura_url_ws))

abi = [{"name": "NewExchange", "inputs": [{"type": "address", "name": "token", "indexed": True}, {"type": "address", "name": "exchange", "indexed": True}], "anonymous": False, "type": "event"}] 
uniswap = ws3.eth.contract('0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95', abi=abi)

events = uniswap.events.NewExchange.createFilter(fromBlock=8567919).get_all_entries()
block_number = events[0]['blockNumber']
print(block_number)

4 Answers 4

1

Try limiting the amount of blocks to 1000

https://community.infura.io/t/getlogs-error-query-returned-more-than-1000-results/358/6

A infura dev mentions:

We currently limit response to blocks of 1000 responses, https://infura.io/docs/ethereum/json-rpc/eth_getLogs 90, the limitations are outlined in this doc.

Limiting the amount of blocks worked for me.

0

web3.py requires the parameter websocket_timeout=60 for a WebsocketProvider:

from web3 import Web3
w3 = Web3(Web3.WebsocketProvider("ws://127.0.0.1:8546", websocket_timeout=60))

If you're using HTTP, you set request_kwargs={'timeout':60} instead:

from web3 import Web3
w3 = Web3(Web3.HTTPProvider("http://127.0.0.1:8545", request_kwargs={'timeout': 60}))

Documentation: https://web3py.readthedocs.io/en/stable/providers.html

0

Any too large response from commercial node providers will time out, because their servers cannot handle the request due to it blocking other customers.

-1

Try this:

ws3 = Web3(Web3.WebsocketProvider(infura_url_ws,request_kwargs={'timeout':60}))

If I remember correctly, the default timeout is 10 (seconds).

4
  • Thanks. I tried, but it still does not work.
    – Nate
    Sep 23, 2019 at 11:30
  • @Nate: What version of web3.py are you using? Sep 23, 2019 at 11:57
  • How long does it wait now before throwing timeout error? Probably you just need to increase timeout even further? Oct 26, 2019 at 21:37
  • This is incorrect syntax for a websocketprovider. see web3py.readthedocs.io/en/stable/providers.html
    – fafrd
    Oct 6, 2021 at 19:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.