44from tempfile import gettempdir
55from typing import Any , Optional
66
7- from taskiq .abc .broker import AsyncBroker
87from taskiq .abc .middleware import TaskiqMiddleware
98from taskiq .message import TaskiqMessage
109from taskiq .result import TaskiqResult
@@ -36,9 +35,6 @@ def __init__(
3635 self .saved_results = None
3736 self .execution_time = None
3837
39- if not AsyncBroker .is_worker_process :
40- return
41-
4238 metrics_path = metrics_path or Path (gettempdir ()) / "taskiq_worker"
4339
4440 if not metrics_path .exists ():
@@ -52,11 +48,7 @@ def __init__(
5248 logger .debug ("Initializing metrics" )
5349
5450 try :
55- from prometheus_client import ( # noqa: WPS433
56- Counter ,
57- Histogram ,
58- start_http_server ,
59- )
51+ from prometheus_client import Counter , Histogram # noqa: WPS433
6052 except ImportError as exc :
6153 raise ImportError (
6254 "Cannot initialize metrics. Please install 'taskiq[metrics]'." ,
@@ -87,10 +79,23 @@ def __init__(
8779 "Tome of function execution" ,
8880 ["task_name" ],
8981 )
90- try :
91- start_http_server (port = server_port , addr = server_addr )
92- except OSError as exc :
93- logger .debug ("Cannot start prometheus server: %s" , exc )
82+ self .server_port = server_port
83+ self .server_addr = server_addr
84+
85+ def startup (self ) -> None :
86+ """
87+ Prometheus startup.
88+
89+ This function starts prometheus server.
90+ It starts it only in case if it's a worker process.
91+ """
92+ from prometheus_client import start_http_server # noqa: WPS433
93+
94+ if self .broker .is_worker_process :
95+ try :
96+ start_http_server (port = self .server_port , addr = self .server_addr )
97+ except OSError as exc :
98+ logger .debug ("Cannot start prometheus server: %s" , exc )
9499
95100 def pre_execute (
96101 self ,
0 commit comments