Skip to content

Commit e5f44e6

Browse files
authored
feat: Upgrade web3-multi-http-provider (#710)
* feat: Upgrade web3-multi-http-provider * fix: Lock with poetry==1.3.2
1 parent 08c2367 commit e5f44e6

File tree

7 files changed

+674
-844
lines changed

7 files changed

+674
-844
lines changed

poetry.lock

Lines changed: 657 additions & 523 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ license = "GPL 3.0"
1818

1919
[tool.poetry.dependencies]
2020
python = "^3.12"
21-
prometheus-client = "^0.16.0"
21+
prometheus-client = "0.21.1"
2222
timeout-decorator = "^0.5.0"
2323
pytest = "^7.2.1"
2424
pytest-xdist = "^3.2.1"
2525
more-itertools = "^10.1.0"
2626
web3 = "^7.8.0"
27-
web3-multi-provider = "^2.0.0"
27+
web3-multi-provider = { version = "^2.2.0", extras = ["metrics"] }
2828
json-stream = "^2.3.2"
2929
oz-merkle-tree = { git = "https://github.com/lidofinance/oz-merkle-tree" }
3030
py-multiformats-cid = "^0.4.4"

src/main.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33

44
from packaging.version import Version
55
from prometheus_client import start_http_server
6+
from web3_multi_provider.metrics import init_metrics
67

7-
from src import constants
8-
from src import variables
8+
from src import constants, variables
99
from src.metrics.healthcheck_server import start_pulse_server
1010
from src.metrics.logging import logging
11-
from src.metrics.prometheus.basic import ENV_VARIABLES_INFO, BUILD_INFO
11+
from src.metrics.prometheus.basic import BUILD_INFO, ENV_VARIABLES_INFO
1212
from src.modules.accounting.accounting import Accounting
1313
from src.modules.checks.checks_module import ChecksModule
1414
from src.modules.csm.csm import CSOracle
@@ -19,15 +19,14 @@
1919
from src.utils.exception import IncompatibleException
2020
from src.web3py.contract_tweak import tweak_w3_contracts
2121
from src.web3py.extensions import (
22-
LidoContracts,
23-
TransactionUtils,
2422
ConsensusClientModule,
25-
KeysAPIClientModule,
26-
LidoValidatorsProvider,
2723
FallbackProviderModule,
24+
KeysAPIClientModule,
2825
LazyCSM,
26+
LidoContracts,
27+
LidoValidatorsProvider,
28+
TransactionUtils,
2929
)
30-
from src.web3py.middleware import add_requests_metric_middleware
3130
from src.web3py.types import Web3
3231

3332
logger = logging.getLogger(__name__)
@@ -90,8 +89,8 @@ def main(module_name: OracleModule):
9089
'ipfs': lambda: ipfs, # type: ignore[dict-item]
9190
})
9291

93-
logger.info({'msg': 'Add metrics middleware for ETH1 requests.'})
94-
add_requests_metric_middleware(web3)
92+
logger.info({'msg': 'Initialize prometheus metrics.'})
93+
init_metrics()
9594

9695
logger.info({'msg': 'Sanity checks.'})
9796

src/metrics/prometheus/basic.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from enum import Enum
22

3-
from prometheus_client import Gauge, Histogram, Counter, Info
3+
from prometheus_client import Counter, Gauge, Histogram, Info
44
from prometheus_client.utils import INF
55

66
from src.variables import PROMETHEUS_PREFIX
@@ -60,14 +60,6 @@ class Status(Enum):
6060

6161
requests_buckets = (.01, .05, .1, .25, .5, .75, 1.0, 2.5, 5.0, 7.5, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 120.0, INF)
6262

63-
EL_REQUESTS_DURATION = Histogram(
64-
'el_requests_duration',
65-
'Duration of requests to EL RPC',
66-
['endpoint', 'call_method', 'call_to', 'code', 'domain'],
67-
namespace=PROMETHEUS_PREFIX,
68-
buckets=requests_buckets,
69-
)
70-
7163
CL_REQUESTS_DURATION = Histogram(
7264
'cl_requests_duration',
7365
'Duration of requests to CL API',

src/web3py/middleware.py

Lines changed: 0 additions & 98 deletions
This file was deleted.

tests/modules/submodules/test_oracle_module.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
from web3_multi_provider.multi_http_provider import NoActiveProviderError
1010

1111
from src import variables
12-
from src.modules.submodules.exceptions import IncompatibleOracleVersion, IsNotMemberException
12+
from src.modules.submodules.exceptions import (
13+
IncompatibleOracleVersion,
14+
IsNotMemberException,
15+
)
1316
from src.modules.submodules.oracle_module import BaseModule, ModuleExecuteDelay
1417
from src.providers.http_provider import NotOkResponse
1518
from src.providers.keys.client import KeysOutdatedException
@@ -103,7 +106,7 @@ def _throw_on_third_call():
103106
"ex",
104107
[
105108
DecoratorTimeoutError("Fake exception"),
106-
NoActiveProviderError("Fake exception"),
109+
NoActiveProviderError.from_exceptions(message="Fake exception", exceptions=[RuntimeError('provider 1 error')]),
107110
RequestsConnectionError("Fake exception"),
108111
NotOkResponse(status=500, text="Fake exception"),
109112
NoSlotsAvailable("Fake exception"),

0 commit comments

Comments
 (0)