Skip to content

Cannot set multiple providers #1701

@nolash

Description

@nolash
  • Version: 5.12.0
  • Python: 3.8.4
  • OS: linux 5.7.0
  • pip freeze output
http://gateway.ethswarm.org/files/aaa5b1f479fa918270eac50c705de8bd21512adffbe22f64ce2765e621721014

wtr: https://web3py.readthedocs.io/en/stable/web3.main.html#providers

(venv) web3 $ cat <<EOF | python
> from web3 import Web3, WebsocketProvider, IPCProvider
> 
> w3 = Web3()
> w3.setProviders([IPCProvider('/tmp/foo.ipc'), WebsocketProvider('ws://127.0.0.1:8546')])
> EOF
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
AttributeError: 'Web3' object has no attribute 'setProviders'
$ cat <<EOF | python
> from web3 import Web3, WebsocketProvider, IPCProvider
> 
> w3 = Web3([IPCProvider('/tmp/foo.ipc'), WebsocketProvider('ws://127.0.0.1:8546')])
> print(w3.eth.blockNumber)
> EOF
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "/home/lash/src/tests/py/web3/venv/lib/python3.8/site-packages/web3/eth.py", line 149, in blockNumber
    return self.web3.manager.request_blocking(RPC.eth_blockNumber, [])
  File "/home/lash/src/tests/py/web3/venv/lib/python3.8/site-packages/web3/manager.py", line 149, in request_blocking
    response = self._make_request(method, params)
  File "/home/lash/src/tests/py/web3/venv/lib/python3.8/site-packages/web3/manager.py", line 124, in _make_request
    request_func = self.provider.request_func(
AttributeError: 'list' object has no attribute 'request_func'
$ cat <<EOF | python
> from web3 import Web3, WebsocketProvider, IPCProvider
> 
> w3 = Web3([WebsocketProvider('ws://127.0.0.1:8546'), IPCProvider('/tmp/foo.ipc')])
> print(w3.eth.blockNumber)
> EOF
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "/home/lash/src/tests/py/web3/venv/lib/python3.8/site-packages/web3/eth.py", line 149, in blockNumber
    return self.web3.manager.request_blocking(RPC.eth_blockNumber, [])
  File "/home/lash/src/tests/py/web3/venv/lib/python3.8/site-packages/web3/manager.py", line 149, in request_blocking
    response = self._make_request(method, params)
  File "/home/lash/src/tests/py/web3/venv/lib/python3.8/site-packages/web3/manager.py", line 124, in _make_request
    request_func = self.provider.request_func(
AttributeError: 'list' object has no attribute 'request_func'

Control:

$ cat <<EOF | python 
> from web3 import Web3, WebsocketProvider, IPCProvider
> 
> w3 = Web3(WebsocketProvider('ws://127.0.0.1:8546'))
> print(w3.eth.blockNumber)
> EOF
7439790
$ socat UNIX-LISTEN:/tmp/foo.ipc - &
[1] 624556
(venv) web3 $ cat <<EOF | python
> from web3 import Web3, WebsocketProvider, IPCProvider
> 
> w3 = Web3(IPCProvider('/tmp/foo.ipc'))
> print(w3.eth.blockNumber)
> EOF
{"jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 0}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions