mlrun 1.7.2rc4__py3-none-any.whl → 1.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mlrun might be problematic. Click here for more details.
- mlrun/__init__.py +26 -22
- mlrun/__main__.py +15 -16
- mlrun/alerts/alert.py +150 -15
- mlrun/api/schemas/__init__.py +1 -9
- mlrun/artifacts/__init__.py +2 -3
- mlrun/artifacts/base.py +62 -19
- mlrun/artifacts/dataset.py +17 -17
- mlrun/artifacts/document.py +454 -0
- mlrun/artifacts/manager.py +28 -18
- mlrun/artifacts/model.py +91 -59
- mlrun/artifacts/plots.py +2 -2
- mlrun/common/constants.py +8 -0
- mlrun/common/formatters/__init__.py +1 -0
- mlrun/common/formatters/artifact.py +1 -1
- mlrun/common/formatters/feature_set.py +2 -0
- mlrun/common/formatters/function.py +1 -0
- mlrun/{model_monitoring/db/stores/v3io_kv/__init__.py → common/formatters/model_endpoint.py} +17 -0
- mlrun/common/formatters/pipeline.py +1 -2
- mlrun/common/formatters/project.py +9 -0
- mlrun/common/model_monitoring/__init__.py +0 -5
- mlrun/common/model_monitoring/helpers.py +12 -62
- mlrun/common/runtimes/constants.py +25 -4
- mlrun/common/schemas/__init__.py +9 -5
- mlrun/common/schemas/alert.py +114 -19
- mlrun/common/schemas/api_gateway.py +3 -3
- mlrun/common/schemas/artifact.py +22 -9
- mlrun/common/schemas/auth.py +8 -4
- mlrun/common/schemas/background_task.py +7 -7
- mlrun/common/schemas/client_spec.py +4 -4
- mlrun/common/schemas/clusterization_spec.py +2 -2
- mlrun/common/schemas/common.py +53 -3
- mlrun/common/schemas/constants.py +15 -0
- mlrun/common/schemas/datastore_profile.py +1 -1
- mlrun/common/schemas/feature_store.py +9 -9
- mlrun/common/schemas/frontend_spec.py +4 -4
- mlrun/common/schemas/function.py +10 -10
- mlrun/common/schemas/hub.py +1 -1
- mlrun/common/schemas/k8s.py +3 -3
- mlrun/common/schemas/memory_reports.py +3 -3
- mlrun/common/schemas/model_monitoring/__init__.py +4 -8
- mlrun/common/schemas/model_monitoring/constants.py +127 -46
- mlrun/common/schemas/model_monitoring/grafana.py +18 -12
- mlrun/common/schemas/model_monitoring/model_endpoints.py +154 -160
- mlrun/common/schemas/notification.py +24 -3
- mlrun/common/schemas/object.py +1 -1
- mlrun/common/schemas/pagination.py +4 -4
- mlrun/common/schemas/partition.py +142 -0
- mlrun/common/schemas/pipeline.py +3 -3
- mlrun/common/schemas/project.py +26 -18
- mlrun/common/schemas/runs.py +3 -3
- mlrun/common/schemas/runtime_resource.py +5 -5
- mlrun/common/schemas/schedule.py +1 -1
- mlrun/common/schemas/secret.py +1 -1
- mlrun/{model_monitoring/db/stores/sqldb/__init__.py → common/schemas/serving.py} +10 -1
- mlrun/common/schemas/tag.py +3 -3
- mlrun/common/schemas/workflow.py +6 -5
- mlrun/common/types.py +1 -0
- mlrun/config.py +157 -89
- mlrun/data_types/__init__.py +5 -3
- mlrun/data_types/infer.py +13 -3
- mlrun/data_types/spark.py +2 -1
- mlrun/datastore/__init__.py +59 -18
- mlrun/datastore/alibaba_oss.py +4 -1
- mlrun/datastore/azure_blob.py +4 -1
- mlrun/datastore/base.py +19 -24
- mlrun/datastore/datastore.py +10 -4
- mlrun/datastore/datastore_profile.py +178 -45
- mlrun/datastore/dbfs_store.py +4 -1
- mlrun/datastore/filestore.py +4 -1
- mlrun/datastore/google_cloud_storage.py +4 -1
- mlrun/datastore/hdfs.py +4 -1
- mlrun/datastore/inmem.py +4 -1
- mlrun/datastore/redis.py +4 -1
- mlrun/datastore/s3.py +14 -3
- mlrun/datastore/sources.py +89 -92
- mlrun/datastore/store_resources.py +7 -4
- mlrun/datastore/storeytargets.py +51 -16
- mlrun/datastore/targets.py +38 -31
- mlrun/datastore/utils.py +87 -4
- mlrun/datastore/v3io.py +4 -1
- mlrun/datastore/vectorstore.py +291 -0
- mlrun/datastore/wasbfs/fs.py +13 -12
- mlrun/db/base.py +286 -100
- mlrun/db/httpdb.py +1562 -490
- mlrun/db/nopdb.py +250 -83
- mlrun/errors.py +6 -2
- mlrun/execution.py +194 -50
- mlrun/feature_store/__init__.py +2 -10
- mlrun/feature_store/api.py +20 -458
- mlrun/feature_store/common.py +9 -9
- mlrun/feature_store/feature_set.py +20 -18
- mlrun/feature_store/feature_vector.py +105 -479
- mlrun/feature_store/feature_vector_utils.py +466 -0
- mlrun/feature_store/retrieval/base.py +15 -11
- mlrun/feature_store/retrieval/job.py +2 -1
- mlrun/feature_store/retrieval/storey_merger.py +1 -1
- mlrun/feature_store/steps.py +3 -3
- mlrun/features.py +30 -13
- mlrun/frameworks/__init__.py +1 -2
- mlrun/frameworks/_common/__init__.py +1 -2
- mlrun/frameworks/_common/artifacts_library.py +2 -2
- mlrun/frameworks/_common/mlrun_interface.py +10 -6
- mlrun/frameworks/_common/model_handler.py +31 -31
- mlrun/frameworks/_common/producer.py +3 -1
- mlrun/frameworks/_dl_common/__init__.py +1 -2
- mlrun/frameworks/_dl_common/loggers/__init__.py +1 -2
- mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +4 -4
- mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +3 -3
- mlrun/frameworks/_ml_common/__init__.py +1 -2
- mlrun/frameworks/_ml_common/loggers/__init__.py +1 -2
- mlrun/frameworks/_ml_common/model_handler.py +21 -21
- mlrun/frameworks/_ml_common/plans/__init__.py +1 -2
- mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +3 -1
- mlrun/frameworks/_ml_common/plans/dataset_plan.py +3 -3
- mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +4 -4
- mlrun/frameworks/auto_mlrun/__init__.py +1 -2
- mlrun/frameworks/auto_mlrun/auto_mlrun.py +22 -15
- mlrun/frameworks/huggingface/__init__.py +1 -2
- mlrun/frameworks/huggingface/model_server.py +9 -9
- mlrun/frameworks/lgbm/__init__.py +47 -44
- mlrun/frameworks/lgbm/callbacks/__init__.py +1 -2
- mlrun/frameworks/lgbm/callbacks/logging_callback.py +4 -2
- mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +4 -2
- mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +1 -2
- mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +5 -5
- mlrun/frameworks/lgbm/model_handler.py +15 -11
- mlrun/frameworks/lgbm/model_server.py +11 -7
- mlrun/frameworks/lgbm/utils.py +2 -2
- mlrun/frameworks/onnx/__init__.py +1 -2
- mlrun/frameworks/onnx/dataset.py +3 -3
- mlrun/frameworks/onnx/mlrun_interface.py +2 -2
- mlrun/frameworks/onnx/model_handler.py +7 -5
- mlrun/frameworks/onnx/model_server.py +8 -6
- mlrun/frameworks/parallel_coordinates.py +11 -11
- mlrun/frameworks/pytorch/__init__.py +22 -23
- mlrun/frameworks/pytorch/callbacks/__init__.py +1 -2
- mlrun/frameworks/pytorch/callbacks/callback.py +2 -1
- mlrun/frameworks/pytorch/callbacks/logging_callback.py +15 -8
- mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +19 -12
- mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +22 -15
- mlrun/frameworks/pytorch/callbacks_handler.py +36 -30
- mlrun/frameworks/pytorch/mlrun_interface.py +17 -17
- mlrun/frameworks/pytorch/model_handler.py +21 -17
- mlrun/frameworks/pytorch/model_server.py +13 -9
- mlrun/frameworks/sklearn/__init__.py +19 -18
- mlrun/frameworks/sklearn/estimator.py +2 -2
- mlrun/frameworks/sklearn/metric.py +3 -3
- mlrun/frameworks/sklearn/metrics_library.py +8 -6
- mlrun/frameworks/sklearn/mlrun_interface.py +3 -2
- mlrun/frameworks/sklearn/model_handler.py +4 -3
- mlrun/frameworks/tf_keras/__init__.py +11 -12
- mlrun/frameworks/tf_keras/callbacks/__init__.py +1 -2
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +17 -14
- mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +15 -12
- mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +21 -18
- mlrun/frameworks/tf_keras/model_handler.py +17 -13
- mlrun/frameworks/tf_keras/model_server.py +12 -8
- mlrun/frameworks/xgboost/__init__.py +19 -18
- mlrun/frameworks/xgboost/model_handler.py +13 -9
- mlrun/k8s_utils.py +2 -5
- mlrun/launcher/base.py +3 -4
- mlrun/launcher/client.py +2 -2
- mlrun/launcher/local.py +6 -2
- mlrun/launcher/remote.py +1 -1
- mlrun/lists.py +8 -4
- mlrun/model.py +132 -46
- mlrun/model_monitoring/__init__.py +3 -5
- mlrun/model_monitoring/api.py +113 -98
- mlrun/model_monitoring/applications/__init__.py +0 -5
- mlrun/model_monitoring/applications/_application_steps.py +81 -50
- mlrun/model_monitoring/applications/base.py +467 -14
- mlrun/model_monitoring/applications/context.py +212 -134
- mlrun/model_monitoring/{db/stores/base → applications/evidently}/__init__.py +6 -2
- mlrun/model_monitoring/applications/evidently/base.py +146 -0
- mlrun/model_monitoring/applications/histogram_data_drift.py +89 -56
- mlrun/model_monitoring/applications/results.py +67 -15
- mlrun/model_monitoring/controller.py +701 -315
- mlrun/model_monitoring/db/__init__.py +0 -2
- mlrun/model_monitoring/db/_schedules.py +242 -0
- mlrun/model_monitoring/db/_stats.py +189 -0
- mlrun/model_monitoring/db/tsdb/__init__.py +33 -22
- mlrun/model_monitoring/db/tsdb/base.py +243 -49
- mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +76 -36
- mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +33 -0
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +213 -0
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +534 -88
- mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +1 -0
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +436 -106
- mlrun/model_monitoring/helpers.py +356 -114
- mlrun/model_monitoring/stream_processing.py +190 -345
- mlrun/model_monitoring/tracking_policy.py +11 -4
- mlrun/model_monitoring/writer.py +49 -90
- mlrun/package/__init__.py +3 -6
- mlrun/package/context_handler.py +2 -2
- mlrun/package/packager.py +12 -9
- mlrun/package/packagers/__init__.py +0 -2
- mlrun/package/packagers/default_packager.py +14 -11
- mlrun/package/packagers/numpy_packagers.py +16 -7
- mlrun/package/packagers/pandas_packagers.py +18 -18
- mlrun/package/packagers/python_standard_library_packagers.py +25 -11
- mlrun/package/packagers_manager.py +35 -32
- mlrun/package/utils/__init__.py +0 -3
- mlrun/package/utils/_pickler.py +6 -6
- mlrun/platforms/__init__.py +47 -16
- mlrun/platforms/iguazio.py +4 -1
- mlrun/projects/operations.py +30 -30
- mlrun/projects/pipelines.py +116 -47
- mlrun/projects/project.py +1292 -329
- mlrun/render.py +5 -9
- mlrun/run.py +57 -14
- mlrun/runtimes/__init__.py +1 -3
- mlrun/runtimes/base.py +30 -22
- mlrun/runtimes/daskjob.py +9 -9
- mlrun/runtimes/databricks_job/databricks_runtime.py +6 -5
- mlrun/runtimes/function_reference.py +5 -2
- mlrun/runtimes/generators.py +3 -2
- mlrun/runtimes/kubejob.py +6 -7
- mlrun/runtimes/mounts.py +574 -0
- mlrun/runtimes/mpijob/__init__.py +0 -2
- mlrun/runtimes/mpijob/abstract.py +7 -6
- mlrun/runtimes/nuclio/api_gateway.py +7 -7
- mlrun/runtimes/nuclio/application/application.py +11 -13
- mlrun/runtimes/nuclio/application/reverse_proxy.go +66 -64
- mlrun/runtimes/nuclio/function.py +127 -70
- mlrun/runtimes/nuclio/serving.py +105 -37
- mlrun/runtimes/pod.py +159 -54
- mlrun/runtimes/remotesparkjob.py +3 -2
- mlrun/runtimes/sparkjob/__init__.py +0 -2
- mlrun/runtimes/sparkjob/spark3job.py +22 -12
- mlrun/runtimes/utils.py +7 -6
- mlrun/secrets.py +2 -2
- mlrun/serving/__init__.py +8 -0
- mlrun/serving/merger.py +7 -5
- mlrun/serving/remote.py +35 -22
- mlrun/serving/routers.py +186 -240
- mlrun/serving/server.py +41 -10
- mlrun/serving/states.py +432 -118
- mlrun/serving/utils.py +13 -2
- mlrun/serving/v1_serving.py +3 -2
- mlrun/serving/v2_serving.py +161 -203
- mlrun/track/__init__.py +1 -1
- mlrun/track/tracker.py +2 -2
- mlrun/track/trackers/mlflow_tracker.py +6 -5
- mlrun/utils/async_http.py +35 -22
- mlrun/utils/clones.py +7 -4
- mlrun/utils/helpers.py +511 -58
- mlrun/utils/logger.py +119 -13
- mlrun/utils/notifications/notification/__init__.py +22 -19
- mlrun/utils/notifications/notification/base.py +39 -15
- mlrun/utils/notifications/notification/console.py +6 -6
- mlrun/utils/notifications/notification/git.py +11 -11
- mlrun/utils/notifications/notification/ipython.py +10 -9
- mlrun/utils/notifications/notification/mail.py +176 -0
- mlrun/utils/notifications/notification/slack.py +16 -8
- mlrun/utils/notifications/notification/webhook.py +24 -8
- mlrun/utils/notifications/notification_pusher.py +191 -200
- mlrun/utils/regex.py +12 -2
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.7.2rc4.dist-info → mlrun-1.8.0.dist-info}/METADATA +69 -54
- mlrun-1.8.0.dist-info/RECORD +351 -0
- {mlrun-1.7.2rc4.dist-info → mlrun-1.8.0.dist-info}/WHEEL +1 -1
- mlrun/model_monitoring/applications/evidently_base.py +0 -137
- mlrun/model_monitoring/db/stores/__init__.py +0 -136
- mlrun/model_monitoring/db/stores/base/store.py +0 -213
- mlrun/model_monitoring/db/stores/sqldb/models/__init__.py +0 -71
- mlrun/model_monitoring/db/stores/sqldb/models/base.py +0 -190
- mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +0 -103
- mlrun/model_monitoring/db/stores/sqldb/models/sqlite.py +0 -40
- mlrun/model_monitoring/db/stores/sqldb/sql_store.py +0 -659
- mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py +0 -726
- mlrun/model_monitoring/model_endpoint.py +0 -118
- mlrun-1.7.2rc4.dist-info/RECORD +0 -351
- {mlrun-1.7.2rc4.dist-info → mlrun-1.8.0.dist-info}/entry_points.txt +0 -0
- {mlrun-1.7.2rc4.dist-info → mlrun-1.8.0.dist-info/licenses}/LICENSE +0 -0
- {mlrun-1.7.2rc4.dist-info → mlrun-1.8.0.dist-info}/top_level.txt +0 -0
mlrun/serving/remote.py
CHANGED
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
#
|
|
15
15
|
import asyncio
|
|
16
16
|
import json
|
|
17
|
+
from copy import copy
|
|
18
|
+
from typing import Optional
|
|
17
19
|
|
|
18
20
|
import aiohttp
|
|
19
21
|
import requests
|
|
@@ -40,24 +42,25 @@ class RemoteStep(storey.SendToHttp):
|
|
|
40
42
|
def __init__(
|
|
41
43
|
self,
|
|
42
44
|
url: str,
|
|
43
|
-
subpath: str = None,
|
|
44
|
-
method: str = None,
|
|
45
|
-
headers: dict = None,
|
|
46
|
-
url_expression: str = None,
|
|
47
|
-
body_expression: str = None,
|
|
45
|
+
subpath: Optional[str] = None,
|
|
46
|
+
method: Optional[str] = None,
|
|
47
|
+
headers: Optional[dict] = None,
|
|
48
|
+
url_expression: Optional[str] = None,
|
|
49
|
+
body_expression: Optional[str] = None,
|
|
48
50
|
return_json: bool = True,
|
|
49
|
-
input_path: str = None,
|
|
50
|
-
result_path: str = None,
|
|
51
|
+
input_path: Optional[str] = None,
|
|
52
|
+
result_path: Optional[str] = None,
|
|
51
53
|
max_in_flight=None,
|
|
52
54
|
retries=None,
|
|
53
55
|
backoff_factor=None,
|
|
54
56
|
timeout=None,
|
|
57
|
+
headers_expression: Optional[str] = None,
|
|
55
58
|
**kwargs,
|
|
56
59
|
):
|
|
57
60
|
"""class for calling remote endpoints
|
|
58
61
|
|
|
59
62
|
sync and async graph step implementation for request/resp to remote service (class shortcut = "$remote")
|
|
60
|
-
url can be an http(s) url (e.g.
|
|
63
|
+
url can be an http(s) url (e.g. `https://myservice/path`) or an mlrun function uri ([project/]name).
|
|
61
64
|
alternatively the url_expression can be specified to build the url from the event (e.g. "event['url']").
|
|
62
65
|
|
|
63
66
|
example pipeline::
|
|
@@ -85,6 +88,7 @@ class RemoteStep(storey.SendToHttp):
|
|
|
85
88
|
:param retries: number of retries (in exponential backoff)
|
|
86
89
|
:param backoff_factor: A backoff factor in seconds to apply between attempts after the second try
|
|
87
90
|
:param timeout: How long to wait for the server to send data before giving up, float in seconds
|
|
91
|
+
:param headers_expression: an expression for getting the request headers from the event, e.g. "event['headers']"
|
|
88
92
|
"""
|
|
89
93
|
# init retry args for storey
|
|
90
94
|
retries = default_retries if retries is None else retries
|
|
@@ -101,6 +105,7 @@ class RemoteStep(storey.SendToHttp):
|
|
|
101
105
|
self.url = url
|
|
102
106
|
self.url_expression = url_expression
|
|
103
107
|
self.body_expression = body_expression
|
|
108
|
+
self.headers_expression = headers_expression
|
|
104
109
|
self.headers = headers
|
|
105
110
|
self.method = method
|
|
106
111
|
self.return_json = return_json
|
|
@@ -113,8 +118,9 @@ class RemoteStep(storey.SendToHttp):
|
|
|
113
118
|
self._session = None
|
|
114
119
|
self._url_function_handler = None
|
|
115
120
|
self._body_function_handler = None
|
|
121
|
+
self._headers_function_handler = None
|
|
116
122
|
|
|
117
|
-
def post_init(self, mode="sync"):
|
|
123
|
+
def post_init(self, mode="sync", **kwargs):
|
|
118
124
|
self._endpoint = self.url
|
|
119
125
|
if self.url and self.context:
|
|
120
126
|
self._endpoint = self.context.get_remote_endpoint(self.url).strip("/")
|
|
@@ -130,6 +136,12 @@ class RemoteStep(storey.SendToHttp):
|
|
|
130
136
|
{"endpoint": self._endpoint, "context": self.context},
|
|
131
137
|
{},
|
|
132
138
|
)
|
|
139
|
+
if self.headers_expression:
|
|
140
|
+
self._headers_function_handler = eval(
|
|
141
|
+
"lambda event: " + self.headers_expression,
|
|
142
|
+
{"context": self.context},
|
|
143
|
+
{},
|
|
144
|
+
)
|
|
133
145
|
elif self.subpath:
|
|
134
146
|
self._append_event_path = self.subpath == "$path"
|
|
135
147
|
if not self._append_event_path:
|
|
@@ -204,7 +216,10 @@ class RemoteStep(storey.SendToHttp):
|
|
|
204
216
|
|
|
205
217
|
def _generate_request(self, event, body):
|
|
206
218
|
method = self.method or event.method or "POST"
|
|
207
|
-
|
|
219
|
+
if self._headers_function_handler:
|
|
220
|
+
headers = self._headers_function_handler(body)
|
|
221
|
+
else:
|
|
222
|
+
headers = copy(self.headers) or {}
|
|
208
223
|
|
|
209
224
|
if self._url_function_handler:
|
|
210
225
|
url = self._url_function_handler(body)
|
|
@@ -215,10 +230,8 @@ class RemoteStep(storey.SendToHttp):
|
|
|
215
230
|
url = url + "/" + striped_path
|
|
216
231
|
if striped_path:
|
|
217
232
|
headers[event_path_key] = event.path
|
|
218
|
-
|
|
219
233
|
if event.id:
|
|
220
234
|
headers[event_id_key] = event.id
|
|
221
|
-
|
|
222
235
|
if method == "GET":
|
|
223
236
|
body = None
|
|
224
237
|
elif body is not None and not isinstance(body, (str, bytes)):
|
|
@@ -241,15 +254,15 @@ class RemoteStep(storey.SendToHttp):
|
|
|
241
254
|
class BatchHttpRequests(_ConcurrentJobExecution):
|
|
242
255
|
def __init__(
|
|
243
256
|
self,
|
|
244
|
-
url: str = None,
|
|
245
|
-
subpath: str = None,
|
|
246
|
-
method: str = None,
|
|
247
|
-
headers: dict = None,
|
|
248
|
-
url_expression: str = None,
|
|
249
|
-
body_expression: str = None,
|
|
257
|
+
url: Optional[str] = None,
|
|
258
|
+
subpath: Optional[str] = None,
|
|
259
|
+
method: Optional[str] = None,
|
|
260
|
+
headers: Optional[dict] = None,
|
|
261
|
+
url_expression: Optional[str] = None,
|
|
262
|
+
body_expression: Optional[str] = None,
|
|
250
263
|
return_json: bool = True,
|
|
251
|
-
input_path: str = None,
|
|
252
|
-
result_path: str = None,
|
|
264
|
+
input_path: Optional[str] = None,
|
|
265
|
+
result_path: Optional[str] = None,
|
|
253
266
|
retries=None,
|
|
254
267
|
backoff_factor=None,
|
|
255
268
|
timeout=None,
|
|
@@ -258,7 +271,7 @@ class BatchHttpRequests(_ConcurrentJobExecution):
|
|
|
258
271
|
"""class for calling remote endpoints in parallel
|
|
259
272
|
|
|
260
273
|
sync and async graph step implementation for request/resp to remote service (class shortcut = "$remote")
|
|
261
|
-
url can be an http(s) url (e.g.
|
|
274
|
+
url can be an http(s) url (e.g. `https://myservice/path`) or an mlrun function uri ([project/]name).
|
|
262
275
|
alternatively the url_expression can be specified to build the url from the event (e.g. "event['url']").
|
|
263
276
|
|
|
264
277
|
example pipeline::
|
|
@@ -333,7 +346,7 @@ class BatchHttpRequests(_ConcurrentJobExecution):
|
|
|
333
346
|
async def _cleanup(self):
|
|
334
347
|
await self._client_session.close()
|
|
335
348
|
|
|
336
|
-
def post_init(self, mode="sync"):
|
|
349
|
+
def post_init(self, mode="sync", **kwargs):
|
|
337
350
|
self._endpoint = self.url
|
|
338
351
|
if self.url and self.context:
|
|
339
352
|
self._endpoint = self.context.get_remote_endpoint(self.url).strip("/")
|