opengris-scaler 1.12.9__cp310-cp310-manylinux_2_28_x86_64.whl → 1.12.25__cp310-cp310-manylinux_2_28_x86_64.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 opengris-scaler might be problematic. Click here for more details.
- {opengris_scaler-1.12.9.dist-info → opengris_scaler-1.12.25.dist-info}/METADATA +16 -22
- opengris_scaler-1.12.25.dist-info/RECORD +185 -0
- {opengris_scaler-1.12.9.dist-info → opengris_scaler-1.12.25.dist-info}/entry_points.txt +1 -0
- opengris_scaler.libs/{libcapnp-1-b787335c.1.0.so → libcapnp-1-137b6426.0.1.so} +0 -0
- opengris_scaler.libs/{libkj-1-094aa318.1.0.so → libkj-1-c3197b44.0.1.so} +0 -0
- scaler/client/agent/client_agent.py +7 -7
- scaler/client/agent/heartbeat_manager.py +5 -5
- scaler/client/client.py +32 -9
- scaler/cluster/cluster.py +4 -4
- scaler/cluster/combo.py +15 -13
- scaler/cluster/object_storage_server.py +7 -7
- scaler/cluster/scheduler.py +8 -5
- scaler/config/defaults.py +7 -0
- scaler/config/loader.py +1 -1
- scaler/config/section/cluster.py +2 -3
- scaler/config/section/ecs_worker_adapter.py +85 -0
- scaler/config/section/native_worker_adapter.py +2 -3
- scaler/config/section/object_storage_server.py +1 -0
- scaler/config/section/scheduler.py +8 -7
- scaler/config/section/symphony_worker_adapter.py +3 -3
- scaler/config/section/webui.py +5 -0
- scaler/config/types/network_backend.py +12 -0
- scaler/config/types/worker.py +1 -1
- scaler/entry_points/cluster.py +3 -3
- scaler/entry_points/object_storage_server.py +12 -8
- scaler/entry_points/scheduler.py +20 -11
- scaler/entry_points/top.py +1 -1
- scaler/entry_points/webui.py +23 -1
- scaler/entry_points/worker_adapter_ecs.py +191 -0
- scaler/entry_points/worker_adapter_native.py +1 -1
- scaler/entry_points/worker_adapter_symphony.py +5 -9
- scaler/io/async_binder.py +9 -5
- scaler/io/async_connector.py +1 -1
- scaler/io/async_object_storage_connector.py +74 -34
- scaler/io/sync_connector.py +1 -1
- scaler/io/sync_object_storage_connector.py +93 -31
- scaler/io/sync_subscriber.py +1 -1
- scaler/io/utility.py +50 -1
- scaler/io/ymq/_ymq.pyi +4 -5
- scaler/io/ymq/ymq.py +24 -16
- scaler/io/ymq_async_object_storage_connector.py +184 -0
- scaler/io/ymq_sync_object_storage_connector.py +184 -0
- scaler/object_storage/object_storage_server.so +0 -0
- scaler/protocol/capnp/common.capnp +5 -0
- scaler/protocol/capnp/message.capnp +4 -2
- scaler/protocol/capnp/object_storage.capnp +5 -0
- scaler/protocol/python/common.py +5 -0
- scaler/protocol/python/message.py +30 -5
- scaler/scheduler/allocate_policy/capability_allocate_policy.py +1 -1
- scaler/scheduler/controllers/information_controller.py +1 -1
- scaler/scheduler/controllers/mixins.py +0 -7
- scaler/scheduler/controllers/scaling_policies/__init__.py +0 -0
- scaler/scheduler/controllers/scaling_policies/fixed_elastic.py +145 -0
- scaler/scheduler/controllers/scaling_policies/mixins.py +10 -0
- scaler/scheduler/controllers/scaling_policies/null.py +14 -0
- scaler/scheduler/controllers/scaling_policies/types.py +9 -0
- scaler/scheduler/controllers/scaling_policies/utility.py +20 -0
- scaler/scheduler/controllers/{scaling_controller.py → scaling_policies/vanilla.py} +25 -16
- scaler/scheduler/controllers/task_controller.py +4 -1
- scaler/scheduler/controllers/worker_controller.py +3 -2
- scaler/scheduler/scheduler.py +10 -12
- scaler/ui/live_display.py +32 -3
- scaler/ui/memory_window.py +14 -14
- scaler/ui/setting_page.py +7 -15
- scaler/ui/task_graph.py +653 -191
- scaler/ui/task_log.py +47 -23
- scaler/ui/utility.py +36 -5
- scaler/ui/webui.py +38 -16
- scaler/ui/worker_processors.py +23 -4
- scaler/utility/identifiers.py +7 -5
- scaler/version.txt +1 -1
- scaler/worker/agent/heartbeat_manager.py +8 -8
- scaler/worker/agent/mixins.py +2 -2
- scaler/worker/agent/processor/processor.py +11 -5
- scaler/worker/agent/processor_holder.py +7 -5
- scaler/worker/agent/processor_manager.py +7 -3
- scaler/worker/worker.py +9 -8
- scaler/worker_adapter/common.py +26 -0
- scaler/worker_adapter/ecs.py +269 -0
- scaler/worker_adapter/native.py +17 -16
- scaler/worker_adapter/symphony/heartbeat_manager.py +7 -7
- scaler/worker_adapter/symphony/task_manager.py +2 -1
- scaler/worker_adapter/symphony/worker.py +7 -8
- scaler/worker_adapter/symphony/worker_adapter.py +12 -15
- src/scaler/io/ymq/_ymq.so +0 -0
- opengris_scaler-1.12.9.dist-info/RECORD +0 -231
- scaler/CMakeLists.txt +0 -11
- scaler/io/ymq/CMakeLists.txt +0 -97
- scaler/io/ymq/_ymq.so +0 -0
- scaler/io/ymq/bytes.h +0 -114
- scaler/io/ymq/common.h +0 -29
- scaler/io/ymq/configuration.h +0 -60
- scaler/io/ymq/epoll_context.cpp +0 -185
- scaler/io/ymq/epoll_context.h +0 -84
- scaler/io/ymq/error.h +0 -132
- scaler/io/ymq/event_loop.h +0 -55
- scaler/io/ymq/event_loop_thread.cpp +0 -64
- scaler/io/ymq/event_loop_thread.h +0 -46
- scaler/io/ymq/event_manager.h +0 -81
- scaler/io/ymq/interruptive_concurrent_queue.h +0 -169
- scaler/io/ymq/io_context.cpp +0 -98
- scaler/io/ymq/io_context.h +0 -44
- scaler/io/ymq/io_socket.cpp +0 -299
- scaler/io/ymq/io_socket.h +0 -121
- scaler/io/ymq/iocp_context.cpp +0 -102
- scaler/io/ymq/iocp_context.h +0 -83
- scaler/io/ymq/logging.h +0 -163
- scaler/io/ymq/message.h +0 -15
- scaler/io/ymq/message_connection.h +0 -16
- scaler/io/ymq/message_connection_tcp.cpp +0 -672
- scaler/io/ymq/message_connection_tcp.h +0 -96
- scaler/io/ymq/network_utils.h +0 -179
- scaler/io/ymq/pymod_ymq/bytes.h +0 -113
- scaler/io/ymq/pymod_ymq/exception.h +0 -124
- scaler/io/ymq/pymod_ymq/gil.h +0 -15
- scaler/io/ymq/pymod_ymq/io_context.h +0 -166
- scaler/io/ymq/pymod_ymq/io_socket.h +0 -285
- scaler/io/ymq/pymod_ymq/message.h +0 -99
- scaler/io/ymq/pymod_ymq/python.h +0 -153
- scaler/io/ymq/pymod_ymq/ymq.cpp +0 -23
- scaler/io/ymq/pymod_ymq/ymq.h +0 -357
- scaler/io/ymq/readme.md +0 -114
- scaler/io/ymq/simple_interface.cpp +0 -80
- scaler/io/ymq/simple_interface.h +0 -24
- scaler/io/ymq/tcp_client.cpp +0 -367
- scaler/io/ymq/tcp_client.h +0 -75
- scaler/io/ymq/tcp_operations.h +0 -41
- scaler/io/ymq/tcp_server.cpp +0 -410
- scaler/io/ymq/tcp_server.h +0 -79
- scaler/io/ymq/third_party/concurrentqueue.h +0 -3747
- scaler/io/ymq/timed_queue.h +0 -272
- scaler/io/ymq/timestamp.h +0 -102
- scaler/io/ymq/typedefs.h +0 -20
- scaler/io/ymq/utils.h +0 -34
- scaler/object_storage/CMakeLists.txt +0 -48
- scaler/object_storage/constants.h +0 -11
- scaler/object_storage/defs.h +0 -14
- scaler/object_storage/io_helper.cpp +0 -44
- scaler/object_storage/io_helper.h +0 -9
- scaler/object_storage/message.cpp +0 -56
- scaler/object_storage/message.h +0 -130
- scaler/object_storage/object_manager.cpp +0 -126
- scaler/object_storage/object_manager.h +0 -52
- scaler/object_storage/object_storage_server.cpp +0 -366
- scaler/object_storage/object_storage_server.h +0 -127
- scaler/object_storage/pymod_object_storage_server.cpp +0 -115
- {opengris_scaler-1.12.9.dist-info → opengris_scaler-1.12.25.dist-info}/WHEEL +0 -0
- {opengris_scaler-1.12.9.dist-info → opengris_scaler-1.12.25.dist-info}/licenses/LICENSE +0 -0
- {opengris_scaler-1.12.9.dist-info → opengris_scaler-1.12.25.dist-info}/licenses/LICENSE.spdx +0 -0
- {opengris_scaler-1.12.9.dist-info → opengris_scaler-1.12.25.dist-info}/licenses/NOTICE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: opengris-scaler
|
|
3
|
-
Version: 1.12.
|
|
3
|
+
Version: 1.12.25
|
|
4
4
|
Summary: OpenGRIS Scaler Distribution Framework
|
|
5
5
|
Author-Email: Citi <opensource@citi.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -9,11 +9,11 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
9
9
|
Classifier: Intended Audience :: Developers
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Topic :: System :: Distributed Computing
|
|
12
|
-
Project-URL: Home, https://github.com/
|
|
12
|
+
Project-URL: Home, https://github.com/finos/opengris-scaler
|
|
13
13
|
Requires-Python: >=3.8
|
|
14
14
|
Requires-Dist: bidict
|
|
15
15
|
Requires-Dist: cloudpickle
|
|
16
|
-
Requires-Dist: psutil==7.1.
|
|
16
|
+
Requires-Dist: psutil==7.1.3
|
|
17
17
|
Requires-Dist: pycapnp==2.1.0
|
|
18
18
|
Requires-Dist: pyzmq
|
|
19
19
|
Requires-Dist: sortedcontainers==2.4.0
|
|
@@ -21,24 +21,28 @@ Requires-Dist: tblib
|
|
|
21
21
|
Requires-Dist: aiohttp
|
|
22
22
|
Requires-Dist: graphlib-backport; python_version < "3.9"
|
|
23
23
|
Requires-Dist: typing-extensions>=4.0; python_version < "3.10"
|
|
24
|
+
Requires-Dist: tomli; python_version < "3.11"
|
|
24
25
|
Provides-Extra: uvloop
|
|
25
26
|
Requires-Dist: uvloop; platform_system != "Windows" and extra == "uvloop"
|
|
26
27
|
Provides-Extra: gui
|
|
27
28
|
Requires-Dist: nicegui[plotly]==2.24.2; python_version == "3.8" and extra == "gui"
|
|
28
|
-
Requires-Dist: nicegui[plotly]==3.0
|
|
29
|
+
Requires-Dist: nicegui[plotly]==3.2.0; python_version >= "3.9" and extra == "gui"
|
|
29
30
|
Provides-Extra: graphblas
|
|
30
31
|
Requires-Dist: python-graphblas; extra == "graphblas"
|
|
31
32
|
Requires-Dist: numpy==1.24.4; python_version == "3.8" and extra == "graphblas"
|
|
32
33
|
Requires-Dist: numpy==2.0.2; python_version == "3.9" and extra == "graphblas"
|
|
33
34
|
Requires-Dist: numpy==2.2.6; python_version >= "3.10" and extra == "graphblas"
|
|
35
|
+
Provides-Extra: aws
|
|
36
|
+
Requires-Dist: boto3; extra == "aws"
|
|
34
37
|
Provides-Extra: all
|
|
35
38
|
Requires-Dist: nicegui[plotly]==2.24.2; python_version == "3.8" and extra == "all"
|
|
36
|
-
Requires-Dist: nicegui[plotly]==3.0
|
|
39
|
+
Requires-Dist: nicegui[plotly]==3.2.0; python_version >= "3.9" and extra == "all"
|
|
37
40
|
Requires-Dist: python-graphblas; extra == "all"
|
|
38
41
|
Requires-Dist: numpy==1.24.4; python_version == "3.8" and extra == "all"
|
|
39
42
|
Requires-Dist: numpy==2.0.2; python_version == "3.9" and extra == "all"
|
|
40
43
|
Requires-Dist: numpy==2.2.6; python_version >= "3.10" and extra == "all"
|
|
41
44
|
Requires-Dist: uvloop; platform_system != "Windows" and extra == "all"
|
|
45
|
+
Requires-Dist: boto3; extra == "all"
|
|
42
46
|
Description-Content-Type: text/markdown
|
|
43
47
|
|
|
44
48
|
<div align="center">
|
|
@@ -58,12 +62,12 @@ Description-Content-Type: text/markdown
|
|
|
58
62
|
<img src="https://img.shields.io/badge/Documentation-0f1632">
|
|
59
63
|
</a>
|
|
60
64
|
<a href="./LICENSE">
|
|
61
|
-
<img src="https://img.shields.io/github/license/
|
|
65
|
+
<img src="https://img.shields.io/github/license/finos/opengris-scaler?label=license&colorA=0f1632&colorB=255be3">
|
|
62
66
|
</a>
|
|
63
|
-
<a href="https://pypi.org/project/scaler">
|
|
64
|
-
<img alt="PyPI - Version" src="https://img.shields.io/pypi/v/scaler?colorA=0f1632&colorB=255be3">
|
|
67
|
+
<a href="https://pypi.org/project/opengris-scaler">
|
|
68
|
+
<img alt="PyPI - Version" src="https://img.shields.io/pypi/v/opengris-scaler?colorA=0f1632&colorB=255be3">
|
|
65
69
|
</a>
|
|
66
|
-
<img src="https://api.securityscorecards.dev/projects/github.com/
|
|
70
|
+
<img src="https://api.securityscorecards.dev/projects/github.com/finos/opengris-scaler/badge">
|
|
67
71
|
</p>
|
|
68
72
|
</div>
|
|
69
73
|
|
|
@@ -365,6 +369,8 @@ with Client(address="tcp://127.0.0.1:2345") as client:
|
|
|
365
369
|
print(future.result()) # 21
|
|
366
370
|
```
|
|
367
371
|
|
|
372
|
+
**Note**: When creating a `Client` inside a task (nested client), the `address` parameter is optional. If omitted, the client automatically uses the scheduler address from the worker context. If provided, the specified address takes precedence.
|
|
373
|
+
|
|
368
374
|
## Task Routing and Capability Management
|
|
369
375
|
|
|
370
376
|
> **Note**: This feature is experimental and may change in future releases.
|
|
@@ -669,21 +675,9 @@ Windows.
|
|
|
669
675
|
Build the Python wheel for Scaler using `cibuildwheel`:
|
|
670
676
|
|
|
671
677
|
```bash
|
|
672
|
-
pip install build cibuildwheel
|
|
673
|
-
|
|
674
|
-
# Parametrize the cibuildwheel's container to build the Boost and Cap'n Proto dependencies.
|
|
675
|
-
export CIBW_BEFORE_ALL='
|
|
676
|
-
yum install sudo -y;
|
|
677
|
-
sudo ./scripts/library_tool.sh capnp compile
|
|
678
|
-
sudo ./scripts/library_tool.sh capnp install
|
|
679
|
-
sudo ./scripts/library_tool.sh boost compile
|
|
680
|
-
sudo ./scripts/library_tool.sh boost install'
|
|
681
|
-
export CIBW_BUILD="*manylinux_x86_64"
|
|
682
|
-
export CIBW_SKIP="pp*"
|
|
683
|
-
export CIBW_MANYLINUX_X86_64_IMAGE="manylinux_2_28"
|
|
678
|
+
pip install build cibuildwheel
|
|
684
679
|
|
|
685
680
|
python -m cibuildwheel --output-dir wheelhouse
|
|
686
|
-
|
|
687
681
|
python -m build --sdist
|
|
688
682
|
```
|
|
689
683
|
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
opengris_scaler.libs/libcapnp-1-137b6426.0.1.so,sha256=4KTrkbBHZXfEDTLhqzpzD9xdfhPWb5h4YE91ueCbw80,4099705
|
|
2
|
+
opengris_scaler.libs/libkj-1-c3197b44.0.1.so,sha256=mPaFmGWCX4oh-xNhVVUmu2DDE7ColL3xzBW6oQinh3w,2769281
|
|
3
|
+
scaler/__init__.py,sha256=nZU5QZ9oW2YIaGwm3-r-6dfmirTVzZpDPDNtX-ITCV4,513
|
|
4
|
+
scaler/about.py,sha256=OBcfSvHO0P3mWaa2Ci4WEOTbH7is-3uYymScxgZPxyg,161
|
|
5
|
+
scaler/version.txt,sha256=48jrGjRqJO8UZKkPuDzsUwD-BKPHQuDKo9tu24YVxKw,8
|
|
6
|
+
scaler/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
scaler/client/client.py,sha256=tZywq0208n7as62ShckPdeI8soFXh3AaS1pGBCVJrZo,25535
|
|
8
|
+
scaler/client/future.py,sha256=fOl5g4Is4E5jtvO0kmRk4uUs_eUjSjMmyniYhWMAH4w,10041
|
|
9
|
+
scaler/client/object_buffer.py,sha256=MBjz1Rf6ufgTyjMYoV8V78xpezot0aUit41nj-5kV50,4670
|
|
10
|
+
scaler/client/object_reference.py,sha256=Pow064leLlO6OhfW-yyEjcesbzn22ijqGBSQlsQNEtU,606
|
|
11
|
+
scaler/client/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
scaler/client/agent/client_agent.py,sha256=nPYGl1qpKLAPRMI5ip5o5F5fU-6Yl_M2Nk3Ln8qPkD8,8078
|
|
13
|
+
scaler/client/agent/disconnect_manager.py,sha256=eNy8QKYgsJi4xnyJING0URx48lyaK2GxNYv-GYWYUmg,1189
|
|
14
|
+
scaler/client/agent/future_manager.py,sha256=SS4ucAjg_p8pAH3VSgfhC8dur6xvEyljwbaOoxoNA2g,4713
|
|
15
|
+
scaler/client/agent/heartbeat_manager.py,sha256=1iF3UKQXHe_UK83HFCZFBMOiqZQzg3yCd2Y6cEIJHtw,2772
|
|
16
|
+
scaler/client/agent/mixins.py,sha256=L7G2XwvSUvlHq5bYQfPCstYbQUtSh0r4A69cq69jh2w,2429
|
|
17
|
+
scaler/client/agent/object_manager.py,sha256=ATAjsxcTc4zbT1SEA-1e4aoCPteFczdWKfbsgRYWf9s,4226
|
|
18
|
+
scaler/client/agent/task_manager.py,sha256=7dr6rv3IAlyISII_SPzeLgQCEZnskiv9Qw3cfV4Sg7U,2833
|
|
19
|
+
scaler/client/serializer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
scaler/client/serializer/default.py,sha256=MU0xosP_IRiTlDHogZtceM6Dfl54KvxHGnnbuwmLlb0,385
|
|
21
|
+
scaler/client/serializer/mixins.py,sha256=R3HWteJ54AC5yAK8nsyhWbYTuMDdkQgDi95aOtAS3Qs,1401
|
|
22
|
+
scaler/cluster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
+
scaler/cluster/cluster.py,sha256=so9qfYC0stvXyULK5-gvDqwdF2SRRMPMGGjHTPYp4uA,4505
|
|
24
|
+
scaler/cluster/combo.py,sha256=B6nDOcSoNGhQLJQGEyJVyhjPLNxfUSknwg_UfF1VNnU,6584
|
|
25
|
+
scaler/cluster/object_storage_server.py,sha256=0X6afXygpEB1xJ9MAgMIjcH2uufTT8L8RGA2MVmQVmc,1684
|
|
26
|
+
scaler/cluster/scheduler.py,sha256=pg-sLzuDuBWifmcb0wcQB1kSZZu0y7FinHWsnGGxT5I,3509
|
|
27
|
+
scaler/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
+
scaler/config/defaults.py,sha256=qh8zWrevVPBOLW5O85Tz031oiPUpkHbRal5fWBDuVGQ,3047
|
|
29
|
+
scaler/config/loader.py,sha256=bjBGPv0AeYH8Hh3hOs2GsMB3M2Y5nXWL5eKG4r6KKYU,3866
|
|
30
|
+
scaler/config/mixins.py,sha256=o1YivS_8AzejSQ_jfSt5bkaA59DQGbw9P-rO5Z7LFVs,443
|
|
31
|
+
scaler/config/section/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
|
+
scaler/config/section/cluster.py,sha256=A17dfUUOUmT4f8UIFB6gBv2TaFCVlhcgXVx1MbbN7x4,2861
|
|
33
|
+
scaler/config/section/ecs_worker_adapter.py,sha256=hNTA6OZbUk1BxVQDiOhvdPriM_w77o19jzJ8c0JlZZ8,4225
|
|
34
|
+
scaler/config/section/native_worker_adapter.py,sha256=yu5NTJscxtOqvTJHwXlKPgBkIi4nRz8-LfGfsD7UCzk,2268
|
|
35
|
+
scaler/config/section/object_storage_server.py,sha256=XmRBD4Bl7Xs1wiEzppIG0JFS9Ma4NbC6sKiTKc_aMuI,200
|
|
36
|
+
scaler/config/section/scheduler.py,sha256=XtZ6fd51SVpkBjYG_XDmu2DqRZuLCTOD1vWYgplh5Yc,2883
|
|
37
|
+
scaler/config/section/symphony_worker_adapter.py,sha256=PJTuSppV7iObfLvXaUVf3vbcNQlipaE5hqkPtArG1Yg,2024
|
|
38
|
+
scaler/config/section/top.py,sha256=4YUCyZTRVfINUhV56j50pg8be5o8nlWxG08fDqofHrA,288
|
|
39
|
+
scaler/config/section/webui.py,sha256=WOiwbDcL7jJ0EPCwlWp-9XWoPFRRQUYQJkIYtk5qVRo,727
|
|
40
|
+
scaler/config/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
+
scaler/config/types/network_backend.py,sha256=o-tBD08ScOohuffqLyN3qeB-Ng4o-cGI8LWDR1ZLE4Y,321
|
|
42
|
+
scaler/config/types/object_storage_server.py,sha256=xvuCwiAQ4C_hKgTI4y6XMx9NKE0aX2QC6dlWNyvJyk4,1338
|
|
43
|
+
scaler/config/types/worker.py,sha256=ney8uqCzf5j_uPIghzj6Nd-OHDeTK6tZF8m4sVNCUM8,1708
|
|
44
|
+
scaler/config/types/zmq.py,sha256=0VODax61H-4PxN6rIeWKlMXOHiW5elVSt1zc-UF0SL8,2593
|
|
45
|
+
scaler/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
+
scaler/entry_points/cluster.py,sha256=6EX08djqhtQZfwUiqeyOVJBytWCYFehqs9Utas--wy4,5801
|
|
47
|
+
scaler/entry_points/object_storage_server.py,sha256=YGDl9-ws0oha1YXXl3gFH660B-IV2o06gCp41zUovdg,1418
|
|
48
|
+
scaler/entry_points/scheduler.py,sha256=OMaxx45d7ErzcAs57DgmYEqm28sHLTrIsuUJy9sLGdU,6476
|
|
49
|
+
scaler/entry_points/top.py,sha256=FRlF6Dk8b3sL41CTENGauBBxrMZx5JjoufqFbGiwQCU,9531
|
|
50
|
+
scaler/entry_points/webui.py,sha256=2xiii_T0PI8pTLJB0RKLMajRDaNYFOKaSP2X9bujMlU,1823
|
|
51
|
+
scaler/entry_points/worker_adapter_ecs.py,sha256=O6ypeF4asnqAw1037O2Ams2Q0kivYIeYKwTUu9hI4Rk,7836
|
|
52
|
+
scaler/entry_points/worker_adapter_native.py,sha256=7oN6nOdri0qvvLB6YrnF1SwExQklKFkLQMo26PPXZG8,5426
|
|
53
|
+
scaler/entry_points/worker_adapter_symphony.py,sha256=D1X0Y_-6lbVnVCHtwZ8fSEbgtAkMU6JLqjgEdmO_VWI,4408
|
|
54
|
+
scaler/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
+
scaler/io/async_binder.py,sha256=KNZSnHD9rNbxuxGd5U0gU023Z5Ys3nVsn31KGvjOVoE,3101
|
|
56
|
+
scaler/io/async_connector.py,sha256=7op2onZTGVzEiBWMH3ZMAEdST01SPzu8FvyWskI768U,2638
|
|
57
|
+
scaler/io/async_object_storage_connector.py,sha256=F6CVMn4iMMynuMEmgH2dVAUBOnYIsQGLbnL4U1m2r3o,7767
|
|
58
|
+
scaler/io/mixins.py,sha256=915V2W1NU1SjC94ioPQs0SlWlo4DiZs1YqE2POIxoRQ,4150
|
|
59
|
+
scaler/io/sync_connector.py,sha256=S3kQkzliIlW2-EXEOjkCl6_tw0l6ur3HdVR7RQvcrho,1964
|
|
60
|
+
scaler/io/sync_object_storage_connector.py,sha256=NkmjfYYbeXy0Tdw5gQNirzMAHxWv8Po6DXON83-JdfU,9352
|
|
61
|
+
scaler/io/sync_subscriber.py,sha256=2DOKd2xKIGc8-J2hUtqT8uO7RxGwjJQMtfqHF4fvgH0,2523
|
|
62
|
+
scaler/io/utility.py,sha256=qVz-ama9_fuiUk6uvoghD7g8f2c8PVU-N725nwMdKm8,3131
|
|
63
|
+
scaler/io/ymq_async_object_storage_connector.py,sha256=_eWEkOtpQGk3FtEqczILrohxy-LfCncVV2Q-h-hwrzc,6635
|
|
64
|
+
scaler/io/ymq_sync_object_storage_connector.py,sha256=E-pwyXtHHbU9IZ2NAeMO-n1Y04Gx5cp41fFcdOqTkEQ,7329
|
|
65
|
+
scaler/io/ymq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
+
scaler/io/ymq/_ymq.pyi,sha256=1yD4ZzoKsHwHGVfaAm1X24LCg0rgMidj8ILiq_81Gug,3063
|
|
67
|
+
scaler/io/ymq/ymq.py,sha256=iu0xEkn2mONDB9MkDolYwZ9COtKFsCJU0Q23tRYosS8,4919
|
|
68
|
+
scaler/object_storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
+
scaler/object_storage/object_storage_server.so,sha256=kr-B1r21AlGaSG5pNGZHHrg4aI1bmQRoeGMD49dlOy0,1372993
|
|
70
|
+
scaler/protocol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
|
+
scaler/protocol/introduction.md,sha256=G8oRzui4KmSlfFUu70y24tTmDmfEKBkog9tFVUn7G1U,5406
|
|
72
|
+
scaler/protocol/worker.md,sha256=o2Hh_HCooqrptpXcHGzuzUkO_o4NWOurp7ja-DQi5ho,10503
|
|
73
|
+
scaler/protocol/capnp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
|
+
scaler/protocol/capnp/_python.py,sha256=VfKp2UQBJHiW8Lh6sjQnmW4tl0BQenIPHKD05ALC_dk,284
|
|
75
|
+
scaler/protocol/capnp/common.capnp,sha256=OAXGJt8cAVQATh3h-SBiEVZ5znC78VblMg1m6Uq-Azo,1733
|
|
76
|
+
scaler/protocol/capnp/message.capnp,sha256=SxgeMdT4YsJQIxjq5Ab3TITmhKKkh_WEYQx9HFsD0sQ,4598
|
|
77
|
+
scaler/protocol/capnp/object_storage.capnp,sha256=YFOMPggwqwZXRW-U5WUzR8kEFN-tNBrxppCWywGIiDI,1764
|
|
78
|
+
scaler/protocol/capnp/status.capnp,sha256=Jr3fGv46CdhN-UmWAmLvNWaPUxcUulOActbA5rvrsa8,1359
|
|
79
|
+
scaler/protocol/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
+
scaler/protocol/python/common.py,sha256=Xb2289e-C13sY8_piZf_Gz4eX20mp_dhdSUjxr5Rnqc,5238
|
|
81
|
+
scaler/protocol/python/message.py,sha256=de4g1ck82fH5l8xbTS2xUKc_dW8PMmPrxjiQLFXHQNk,22518
|
|
82
|
+
scaler/protocol/python/mixins.py,sha256=BjGRDyjgezg6_3-68NO-E-0nhu20RQ8CJTyLZBCo9vo,238
|
|
83
|
+
scaler/protocol/python/object_storage.py,sha256=gWmtwtAbUOEZUNooDpvU5jUvdfZGFuzY0ehSptAyH3w,3915
|
|
84
|
+
scaler/protocol/python/status.py,sha256=u_5leag2vHhpbA4lw2U9FJyWC8_b7rnXPhK5FelGBwk,7808
|
|
85
|
+
scaler/scheduler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
|
+
scaler/scheduler/scheduler.py,sha256=JX-FR-CgtgfVp9Nw1mg-T7pPGXOdPiBkhLHJDYAfjXw,11163
|
|
87
|
+
scaler/scheduler/allocate_policy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
|
+
scaler/scheduler/allocate_policy/allocate_policy.py,sha256=efBAR2bzkct3mRf94NLlYtVszdWLrm5CTWuyAD9LH-s,315
|
|
89
|
+
scaler/scheduler/allocate_policy/capability_allocate_policy.py,sha256=ya47keTt679fADdHyqPDohthx0aO2AG1LlIqx3lf0EU,11836
|
|
90
|
+
scaler/scheduler/allocate_policy/even_load_allocate_policy.py,sha256=zzeRfbw7_SqZdQf7DC9Gf1CIA65DQL44q9K56pyEr8E,5906
|
|
91
|
+
scaler/scheduler/allocate_policy/mixins.py,sha256=LKcG-B_Xb7WvueD59ZThEaLTD8yFwf3u9oi0wkLtN00,2229
|
|
92
|
+
scaler/scheduler/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
|
+
scaler/scheduler/controllers/balance_controller.py,sha256=b5HfiR0C4zu0NhXgEAQvaQ00rM82txeq7VSuLqMpyPY,2858
|
|
94
|
+
scaler/scheduler/controllers/client_controller.py,sha256=_BJbHEz7MPPMgb7vw8qwZYokFQPAjY5JOdO0sy5ZYHk,5262
|
|
95
|
+
scaler/scheduler/controllers/config_controller.py,sha256=8YM4Ofg8biZLfkkQUEIhgnWBjOVp_5iYieNeavkt4zA,1064
|
|
96
|
+
scaler/scheduler/controllers/graph_controller.py,sha256=RmqzLjZ8e5X2IZdcnQrbNBYcrCe-8oy1-RX64U6kCP4,17549
|
|
97
|
+
scaler/scheduler/controllers/information_controller.py,sha256=34BRJ6JzPrtE3QHn87uMnCtuW7_YILZjA9OLDCB7PkM,3318
|
|
98
|
+
scaler/scheduler/controllers/mixins.py,sha256=7zdcIln95MEOuv0hECT7uIXFmTwWcrCdx-7ES66BNNY,6149
|
|
99
|
+
scaler/scheduler/controllers/object_controller.py,sha256=PNHiQ3-92jbbHwKjQ_YVbupmFbBhMJ5ilom1MxnRIm4,6173
|
|
100
|
+
scaler/scheduler/controllers/task_controller.py,sha256=9Rhenwqeqypb2uBpF7wCXOKur618O2ZmOTOmtzRezLw,18208
|
|
101
|
+
scaler/scheduler/controllers/worker_controller.py,sha256=GJ3MthFyijwRcn2J_LZWAoKLbGTO33_qqROelGjywqA,7024
|
|
102
|
+
scaler/scheduler/controllers/scaling_policies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
103
|
+
scaler/scheduler/controllers/scaling_policies/fixed_elastic.py,sha256=jJKpDFkGxhO4_cwA0rJohLtwEGvmVGte0HM5U46EZLM,6607
|
|
104
|
+
scaler/scheduler/controllers/scaling_policies/mixins.py,sha256=-j1YCJLNO5T7s4H3WvpDVLfBSGHzcN2V6k-yobI1rBc,279
|
|
105
|
+
scaler/scheduler/controllers/scaling_policies/null.py,sha256=Z15jvo2WoWUNLYw19GSE1uxXWILRRYB58seK8e39BCc,475
|
|
106
|
+
scaler/scheduler/controllers/scaling_policies/types.py,sha256=tGFq2HNWJoc06P5KKHzH3uq0LfjPtfkZpMcVjIxeTuM,159
|
|
107
|
+
scaler/scheduler/controllers/scaling_policies/utility.py,sha256=WWcCBzNL87gZr2ygKBIMKgWh0oFvI-K3PkAXUQozCSU,1146
|
|
108
|
+
scaler/scheduler/controllers/scaling_policies/vanilla.py,sha256=PdfdJzd2SlQ5CEXv7JHe0hAMzW3vUuYU0mnTFr_fPTQ,4253
|
|
109
|
+
scaler/scheduler/object_usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
|
+
scaler/scheduler/object_usage/object_tracker.py,sha256=cx7n-TsgvhXK7bVqeam0LW6C8vaOPwKLeIRHSzW6Cxs,4600
|
|
111
|
+
scaler/scheduler/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
|
+
scaler/scheduler/task/task_state_machine.py,sha256=j743KFNK-NAv3XePnYK8rIzkwQbHYmJSpVKPEuD8d0o,3555
|
|
113
|
+
scaler/scheduler/task/task_state_manager.py,sha256=wrpLc-HsW7VzUTiNK8LsUPHxMrm8fiC9Rk3g29dwkt8,2590
|
|
114
|
+
scaler/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
|
+
scaler/ui/constants.py,sha256=GVljwcm14bTpEj5k0Cfoe5NFXxepGFZl3Rm-mSHoZ-A,167
|
|
116
|
+
scaler/ui/live_display.py,sha256=eA44CkZlWW8Iovhc80AfhpRXdJ_CjErLd71ms6o1_LA,5525
|
|
117
|
+
scaler/ui/memory_window.py,sha256=lIyj-kM0oAzU1fAJpaBcoDOGPKnrHwRVvq8RAW68IgA,5578
|
|
118
|
+
scaler/ui/setting_page.py,sha256=crM_khWAe5sObYY7tM2umz1rCdDYsLVeYo7LDyS1onA,1277
|
|
119
|
+
scaler/ui/task_graph.py,sha256=El5JLRVAN1tyy3d31KCrTvAAiG4fmed0c-FZsdSiLNQ,34706
|
|
120
|
+
scaler/ui/task_log.py,sha256=RAHmytaaSuTJP8AmUb75-gSsyhIxWmxfjp6AxrcFU9M,3808
|
|
121
|
+
scaler/ui/utility.py,sha256=3mPucmAxd3mVvgGm-YFeyDVZsbc5hhsv5OllnP5r3Rk,2033
|
|
122
|
+
scaler/ui/webui.py,sha256=0L9WLF87oJsQ4QDw5AkXx9GHa9beH00sgIApA98zgxc,5836
|
|
123
|
+
scaler/ui/worker_processors.py,sha256=5oBmHVRunbJrZvq9z2aikYbEXmyn54M47BgN0KMFr9o,3837
|
|
124
|
+
scaler/utility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
|
+
scaler/utility/debug.py,sha256=FKJZ0xyy9XFEzYB86H_Cfs-0Fd42oUr9rppY1Qd8Ikw,407
|
|
126
|
+
scaler/utility/event_list.py,sha256=-ifYdr2IiLNRzY72l6iAdDpkg8Rgfz5YkRxqudSKPX4,1532
|
|
127
|
+
scaler/utility/event_loop.py,sha256=BDKzbecbAfLWORGAIAiAG4KbObWCRnReD6t6o2IhIPE,1838
|
|
128
|
+
scaler/utility/exceptions.py,sha256=vXV1fUebZ8tRFGqTEDM6O5LsL_vScDHNQ8ZezdjEiPk,532
|
|
129
|
+
scaler/utility/formatter.py,sha256=QJUAxZWqWqrJb-MGRkHTeRHkJNRcpPg4Q_E5VOlhMsI,1008
|
|
130
|
+
scaler/utility/identifiers.py,sha256=zh6LGFmk6DZ7Hdz1a56dH_nWXqfbbwn82lGjRfRXrjA,2991
|
|
131
|
+
scaler/utility/many_to_many_dict.py,sha256=JLv3a3Wb6OcXT462exMZ_LsrizXWXUdQCz_WCTBV3bM,4641
|
|
132
|
+
scaler/utility/mixins.py,sha256=0b4_tTc35J5Aa8Ac9hn5j6-OL6sLmgD-9xm24-C51YA,266
|
|
133
|
+
scaler/utility/network_util.py,sha256=OeypHvDEHNlz-U7MucBDglyVg9LahLNsqwwpXjW-ot0,243
|
|
134
|
+
scaler/utility/one_to_many_dict.py,sha256=NpRrTfw9ubSTxyzt1RNp6CpKhehyny6ZM0mWr7rouhI,2223
|
|
135
|
+
scaler/utility/serialization.py,sha256=JRHHJjmYKi9GaGZ0ukxFD35QDxmU2dts6PsXfd2WbJY,214
|
|
136
|
+
scaler/utility/graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
137
|
+
scaler/utility/graph/optimization.py,sha256=xp5JAkdnkzpdH3k6lw0aHYy1sKZo5iAaww0VfjHUx9s,785
|
|
138
|
+
scaler/utility/graph/topological_sorter.py,sha256=9_CfWpJLZ1A9SAJgg03RQspjf1dRFV2cqQoJ6ZCOScs,354
|
|
139
|
+
scaler/utility/graph/topological_sorter_graphblas.py,sha256=BwAafDQsF8iNUVWrZ2R0aUKxKMcISI3xC2bmJVhm5SE,6856
|
|
140
|
+
scaler/utility/logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
|
+
scaler/utility/logging/decorators.py,sha256=QvObAsCD29Q9u4LL9jr8HYvYASSlLmkjftPXoa2rBRg,759
|
|
142
|
+
scaler/utility/logging/scoped_logger.py,sha256=mOWJBsKxANCXPRW3D9eUOWVcz0BEZAFLJoYG5nXOtI4,1024
|
|
143
|
+
scaler/utility/logging/utility.py,sha256=ob4VWkRJKQcQXMrtoIwgP6drHH4n3SZ3t4arqcj8okM,5799
|
|
144
|
+
scaler/utility/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
145
|
+
scaler/utility/metadata/profile_result.py,sha256=5GXVet_oAOnAl94vQ6LrPMpaKrG9KBLKoOfUTq8_pI8,1000
|
|
146
|
+
scaler/utility/metadata/task_flags.py,sha256=b-3iwr9IyCfTGV6b-21FjnHxHccFI9zXFEbmXoY93vY,864
|
|
147
|
+
scaler/utility/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
|
+
scaler/utility/queues/async_indexed_queue.py,sha256=QeEXa1l9ujsvPmn2blBODouNjcAVhM21DoeIEMV4Zfs,1171
|
|
149
|
+
scaler/utility/queues/async_priority_queue.py,sha256=IgLs9Ll3QNoYTI7Wp0sqLcb71wFasU6epCAmHjJ5v5k,2709
|
|
150
|
+
scaler/utility/queues/async_sorted_priority_queue.py,sha256=f4k1dO34LcJkq1OMLbI_nLg23R_Vmj1SGNTJ8oESdUk,1448
|
|
151
|
+
scaler/utility/queues/indexed_queue.py,sha256=MLFkXWEZ8HaJC-gKZD9F9gf-oXL_lJ7O317FnTWFCuQ,3077
|
|
152
|
+
scaler/worker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
153
|
+
scaler/worker/preload.py,sha256=gjkNx1IvRBk_bJeYCBN_tD6Vyw8n0LJbnI1O2qwZz18,3086
|
|
154
|
+
scaler/worker/worker.py,sha256=Z8l4NhyinnjZsTdpeUbQII9sC9LoJzg2DMrVQlgNDKE,10986
|
|
155
|
+
scaler/worker/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
156
|
+
scaler/worker/agent/heartbeat_manager.py,sha256=9eeFDYuYcn6teuIRIcA3LJts8VN-DsGiJR4N0QgAHWY,4793
|
|
157
|
+
scaler/worker/agent/mixins.py,sha256=ckpb2tjLW6mFY3S_tFkUzvKi2dkCb_datKWLJqYDNDs,4074
|
|
158
|
+
scaler/worker/agent/processor_holder.py,sha256=Jlu2o0tArrRo5RnympYiF5EaSPNbLPceg3nbx2d2fu4,5096
|
|
159
|
+
scaler/worker/agent/processor_manager.py,sha256=jso_12HDEt5CvGlVslH_w_B2C5YNmbPm4LKk_zHEcjk,13397
|
|
160
|
+
scaler/worker/agent/profiling_manager.py,sha256=77qF_b8LhfKszQ5eNZiUUc9FqcBCH5Uo1jpEklbCExg,3977
|
|
161
|
+
scaler/worker/agent/task_manager.py,sha256=7X1J9MW8Ib58t1dBb84yhkZVo60zezKn-Z5M2oF-RoA,6149
|
|
162
|
+
scaler/worker/agent/timeout_manager.py,sha256=HAUBUOhFh8QTeuYTrhInr0mX1O12PGbODBkkUtcLReQ,602
|
|
163
|
+
scaler/worker/agent/processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
164
|
+
scaler/worker/agent/processor/object_cache.py,sha256=6IlU1hAV3ZgapNj9UMXJI_eN7uwVbCvVh9Vhlv6arEs,3857
|
|
165
|
+
scaler/worker/agent/processor/processor.py,sha256=6H26lFUd5QSc7XI-w8BVYlA_5oa06bL2UeeTja6T18A,11133
|
|
166
|
+
scaler/worker/agent/processor/streaming_buffer.py,sha256=aOBfbC3VOveYvpR6HIqBcTCXPc--dY0-q1IGIAXeI1k,863
|
|
167
|
+
scaler/worker_adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
|
+
scaler/worker_adapter/common.py,sha256=6i6rhgoOioDDkBKGFCsrTTlI3OJnc3r-cKCNoR_GLls,636
|
|
169
|
+
scaler/worker_adapter/ecs.py,sha256=KNQhOkzS4xTTtqmmWhK_PZtngPtqErXbd6akek6hYIo,11596
|
|
170
|
+
scaler/worker_adapter/native.py,sha256=yFgjCwmOmWRzKrWgaRswtpUMOTKQHEN1L1x2DdX58js,6551
|
|
171
|
+
scaler/worker_adapter/symphony/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
172
|
+
scaler/worker_adapter/symphony/callback.py,sha256=ofy3rstxgezT8uT7Y1B9im-CwMPGlJHCd1EuHuViGqw,1534
|
|
173
|
+
scaler/worker_adapter/symphony/heartbeat_manager.py,sha256=PukyrkU7Ea8M-Icgx3KHhFNaKmizj7g71iFzj-N1TZo,3264
|
|
174
|
+
scaler/worker_adapter/symphony/message.py,sha256=HOonEASua8e-uwpPVxprjyl1rrYmFJaSd8FaobbK5VE,688
|
|
175
|
+
scaler/worker_adapter/symphony/task_manager.py,sha256=C-qAn0dH57rEEIjnqV8KLKF48bq0dAKSomgS7ITS1c0,12181
|
|
176
|
+
scaler/worker_adapter/symphony/worker.py,sha256=0GGHo-7uWDISvJKw94r1wfAQr-5_esVtoRXa1jdFVyo,7932
|
|
177
|
+
scaler/worker_adapter/symphony/worker_adapter.py,sha256=bFQ_LkAg8wqNzzQkBZRAVvzlNF8RnIWtWfnQBg7KJ9U,5732
|
|
178
|
+
src/scaler/io/ymq/_ymq.so,sha256=X1_ngAo4xYQn40wJOMDoZhNX8EHGXTurzlaoaikmVJk,1142912
|
|
179
|
+
opengris_scaler-1.12.25.dist-info/METADATA,sha256=rMoLupnifJ50ydxaNWDYiSWS2XMOubNHQMsG300NSuE,26920
|
|
180
|
+
opengris_scaler-1.12.25.dist-info/WHEEL,sha256=WfUIOrZZjmphW6XvWWOC-3zHgyiL7DZcrARpY3z4EcQ,118
|
|
181
|
+
opengris_scaler-1.12.25.dist-info/entry_points.txt,sha256=1nvHjpnx1XRfxDTeR9MzO30-jsBHAHrd2YRFp2FvtwE,518
|
|
182
|
+
opengris_scaler-1.12.25.dist-info/RECORD,,
|
|
183
|
+
opengris_scaler-1.12.25.dist-info/licenses/LICENSE,sha256=xudC0jta6OXJkSHiLzzQQU50HIwSo0G97exO280dtR8,11345
|
|
184
|
+
opengris_scaler-1.12.25.dist-info/licenses/LICENSE.spdx,sha256=i49Qe6AmXxuvocKyExEFduvdh-NQ5YuxdHs515G8VOQ,225
|
|
185
|
+
opengris_scaler-1.12.25.dist-info/licenses/NOTICE,sha256=JUHdG2ssq0nP2QsqPM8X2eJhfJhK_lemIvDBqBRXrMo,286
|
|
@@ -6,4 +6,5 @@ scaler_ui = scaler.entry_points.webui:main
|
|
|
6
6
|
scaler_object_storage_server = scaler.entry_points.object_storage_server:main
|
|
7
7
|
scaler_worker_adapter_native = scaler.entry_points.worker_adapter_native:main
|
|
8
8
|
scaler_worker_adapter_symphony = scaler.entry_points.worker_adapter_symphony:main
|
|
9
|
+
scaler_worker_adapter_ecs = scaler.entry_points.worker_adapter_ecs:main
|
|
9
10
|
|
|
Binary file
|
|
Binary file
|
|
@@ -13,6 +13,7 @@ from scaler.client.agent.heartbeat_manager import ClientHeartbeatManager
|
|
|
13
13
|
from scaler.client.agent.object_manager import ClientObjectManager
|
|
14
14
|
from scaler.client.agent.task_manager import ClientTaskManager
|
|
15
15
|
from scaler.client.serializer.mixins import Serializer
|
|
16
|
+
from scaler.config.types.zmq import ZMQConfig
|
|
16
17
|
from scaler.io.async_connector import ZMQAsyncConnector
|
|
17
18
|
from scaler.io.mixins import AsyncConnector
|
|
18
19
|
from scaler.protocol.python.common import ObjectStorageAddress
|
|
@@ -32,7 +33,6 @@ from scaler.protocol.python.mixins import Message
|
|
|
32
33
|
from scaler.utility.event_loop import create_async_loop_routine
|
|
33
34
|
from scaler.utility.exceptions import ClientCancelledException, ClientQuitException, ClientShutdownException
|
|
34
35
|
from scaler.utility.identifiers import ClientID
|
|
35
|
-
from scaler.config.types.zmq import ZMQConfig
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
class ClientAgent(threading.Thread):
|
|
@@ -59,7 +59,7 @@ class ClientAgent(threading.Thread):
|
|
|
59
59
|
self._client_agent_address = client_agent_address
|
|
60
60
|
self._scheduler_address = scheduler_address
|
|
61
61
|
self._context = context
|
|
62
|
-
self.
|
|
62
|
+
self._object_storage_address: Future[ObjectStorageAddress] = Future()
|
|
63
63
|
|
|
64
64
|
self._future_manager = future_manager
|
|
65
65
|
|
|
@@ -89,7 +89,7 @@ class ClientAgent(threading.Thread):
|
|
|
89
89
|
def __initialize(self):
|
|
90
90
|
self._disconnect_manager = ClientDisconnectManager()
|
|
91
91
|
self._heartbeat_manager = ClientHeartbeatManager(
|
|
92
|
-
death_timeout_seconds=self._timeout_seconds, storage_address_future=self.
|
|
92
|
+
death_timeout_seconds=self._timeout_seconds, storage_address_future=self._object_storage_address
|
|
93
93
|
)
|
|
94
94
|
self._object_manager = ClientObjectManager(identity=self._identity)
|
|
95
95
|
self._task_manager = ClientTaskManager()
|
|
@@ -118,9 +118,9 @@ class ClientAgent(threading.Thread):
|
|
|
118
118
|
self.__initialize()
|
|
119
119
|
self.__run_loop()
|
|
120
120
|
|
|
121
|
-
def
|
|
121
|
+
def get_object_storage_address(self) -> ObjectStorageAddress:
|
|
122
122
|
"""Returns the object storage address, or block until it receives it."""
|
|
123
|
-
return self.
|
|
123
|
+
return self._object_storage_address.result()
|
|
124
124
|
|
|
125
125
|
async def __on_receive_from_client(self, message: Message):
|
|
126
126
|
if isinstance(message, ClientDisconnect):
|
|
@@ -194,8 +194,8 @@ class ClientAgent(threading.Thread):
|
|
|
194
194
|
if exception is None:
|
|
195
195
|
return
|
|
196
196
|
|
|
197
|
-
if not self.
|
|
198
|
-
self.
|
|
197
|
+
if not self._object_storage_address.done():
|
|
198
|
+
self._object_storage_address.set_exception(exception)
|
|
199
199
|
|
|
200
200
|
if isinstance(exception, asyncio.CancelledError):
|
|
201
201
|
logging.error("ClientAgent: async. loop cancelled")
|
|
@@ -15,7 +15,7 @@ from scaler.utility.mixins import Looper
|
|
|
15
15
|
class ClientHeartbeatManager(Looper, HeartbeatManager):
|
|
16
16
|
def __init__(self, death_timeout_seconds: int, storage_address_future: Future):
|
|
17
17
|
self._death_timeout_seconds = death_timeout_seconds
|
|
18
|
-
self.
|
|
18
|
+
self._object_storage_address = storage_address_future
|
|
19
19
|
|
|
20
20
|
self._process = psutil.Process()
|
|
21
21
|
|
|
@@ -50,10 +50,10 @@ class ClientHeartbeatManager(Looper, HeartbeatManager):
|
|
|
50
50
|
self._latency_us = int(((time.time_ns() - self._start_timestamp_ns) / 2) // 1_000)
|
|
51
51
|
self._start_timestamp_ns = 0
|
|
52
52
|
|
|
53
|
-
if self.
|
|
53
|
+
if self._object_storage_address.done():
|
|
54
54
|
return
|
|
55
55
|
|
|
56
|
-
self.
|
|
56
|
+
self._object_storage_address.set_result(heartbeat.object_storage_address())
|
|
57
57
|
|
|
58
58
|
async def routine(self):
|
|
59
59
|
if time.time() - self._last_scheduler_contact > self._death_timeout_seconds:
|
|
@@ -69,6 +69,6 @@ class ClientHeartbeatManager(Looper, HeartbeatManager):
|
|
|
69
69
|
await self.send_heartbeat()
|
|
70
70
|
self._start_timestamp_ns = time.time_ns()
|
|
71
71
|
|
|
72
|
-
def
|
|
72
|
+
def get_object_storage_address(self) -> ObjectStorageAddress:
|
|
73
73
|
"""Returns the object storage configuration, or block until it receives it."""
|
|
74
|
-
return self.
|
|
74
|
+
return self._object_storage_address.result()
|
scaler/client/client.py
CHANGED
|
@@ -17,9 +17,10 @@ from scaler.client.object_reference import ObjectReference
|
|
|
17
17
|
from scaler.client.serializer.default import DefaultSerializer
|
|
18
18
|
from scaler.client.serializer.mixins import Serializer
|
|
19
19
|
from scaler.config.defaults import DEFAULT_CLIENT_TIMEOUT_SECONDS, DEFAULT_HEARTBEAT_INTERVAL_SECONDS
|
|
20
|
+
from scaler.config.types.zmq import ZMQConfig, ZMQType
|
|
20
21
|
from scaler.io.mixins import SyncConnector, SyncObjectStorageConnector
|
|
21
22
|
from scaler.io.sync_connector import ZMQSyncConnector
|
|
22
|
-
from scaler.io.
|
|
23
|
+
from scaler.io.utility import create_sync_object_storage_connector
|
|
23
24
|
from scaler.protocol.python.message import ClientDisconnect, ClientShutdownResponse, GraphTask, Task
|
|
24
25
|
from scaler.utility.exceptions import ClientQuitException, MissingObjects
|
|
25
26
|
from scaler.utility.graph.optimization import cull_graph
|
|
@@ -27,7 +28,6 @@ from scaler.utility.graph.topological_sorter import TopologicalSorter
|
|
|
27
28
|
from scaler.utility.identifiers import ClientID, ObjectID, TaskID
|
|
28
29
|
from scaler.utility.metadata.profile_result import ProfileResult
|
|
29
30
|
from scaler.utility.metadata.task_flags import TaskFlags, retrieve_task_flags_from_task
|
|
30
|
-
from scaler.config.types.zmq import ZMQConfig, ZMQType
|
|
31
31
|
from scaler.worker.agent.processor.processor import Processor
|
|
32
32
|
|
|
33
33
|
|
|
@@ -51,7 +51,7 @@ class _CallNode:
|
|
|
51
51
|
class Client:
|
|
52
52
|
def __init__(
|
|
53
53
|
self,
|
|
54
|
-
address: str,
|
|
54
|
+
address: Optional[str] = None,
|
|
55
55
|
profiling: bool = False,
|
|
56
56
|
timeout_seconds: int = DEFAULT_CLIENT_TIMEOUT_SECONDS,
|
|
57
57
|
heartbeat_interval_seconds: int = DEFAULT_HEARTBEAT_INTERVAL_SECONDS,
|
|
@@ -61,8 +61,9 @@ class Client:
|
|
|
61
61
|
"""
|
|
62
62
|
The Scaler Client used to send tasks to a scheduler.
|
|
63
63
|
|
|
64
|
-
:param address: Address of Scheduler to submit work to
|
|
65
|
-
|
|
64
|
+
:param address: Address of Scheduler to submit work to. If None, will attempt to auto-detect
|
|
65
|
+
when running inside a worker context.
|
|
66
|
+
:type address: Optional[str]
|
|
66
67
|
:param profiling: If True, the returned futures will have the `task_duration()` property enabled.
|
|
67
68
|
:type profiling: bool
|
|
68
69
|
:param timeout_seconds: Seconds until heartbeat times out
|
|
@@ -72,6 +73,7 @@ class Client:
|
|
|
72
73
|
:param stream_output: If True, stdout/stderr will be streamed to client during task execution
|
|
73
74
|
:type stream_output: bool
|
|
74
75
|
"""
|
|
76
|
+
address = self._resolve_scheduler_address(address)
|
|
75
77
|
self.__initialize__(address, profiling, timeout_seconds, heartbeat_interval_seconds, serializer, stream_output)
|
|
76
78
|
|
|
77
79
|
def __initialize__(
|
|
@@ -117,11 +119,11 @@ class Client:
|
|
|
117
119
|
logging.info(f"ScalerClient: connect to scheduler at {self._scheduler_address}")
|
|
118
120
|
|
|
119
121
|
# Blocks until the agent receives the object storage address
|
|
120
|
-
self.
|
|
122
|
+
self._object_storage_address = self._agent.get_object_storage_address()
|
|
121
123
|
|
|
122
|
-
logging.info(f"ScalerClient: connect to object storage at {self.
|
|
123
|
-
self._connector_storage: SyncObjectStorageConnector =
|
|
124
|
-
self.
|
|
124
|
+
logging.info(f"ScalerClient: connect to object storage at {self._object_storage_address}")
|
|
125
|
+
self._connector_storage: SyncObjectStorageConnector = create_sync_object_storage_connector(
|
|
126
|
+
self._object_storage_address.host, self._object_storage_address.port
|
|
125
127
|
)
|
|
126
128
|
|
|
127
129
|
self._object_buffer = ObjectBuffer(
|
|
@@ -380,6 +382,10 @@ class Client:
|
|
|
380
382
|
disconnect from connected scheduler, this will not shut down the scheduler
|
|
381
383
|
"""
|
|
382
384
|
|
|
385
|
+
# Handle case where client wasn't fully initialized
|
|
386
|
+
if not hasattr(self, "_stop_event"):
|
|
387
|
+
return
|
|
388
|
+
|
|
383
389
|
if self._stop_event.is_set():
|
|
384
390
|
self.__destroy()
|
|
385
391
|
return
|
|
@@ -633,3 +639,20 @@ class Client:
|
|
|
633
639
|
assert current_task is not None
|
|
634
640
|
|
|
635
641
|
return retrieve_task_flags_from_task(current_task).priority
|
|
642
|
+
|
|
643
|
+
def _resolve_scheduler_address(self, address: Optional[str]) -> str:
|
|
644
|
+
"""Resolve the scheduler address based on the provided address and worker context."""
|
|
645
|
+
# Provided address always takes precedence
|
|
646
|
+
if address is not None:
|
|
647
|
+
return address
|
|
648
|
+
|
|
649
|
+
# No address provided, check if we're running inside a worker context
|
|
650
|
+
current_processor = Processor.get_current_processor()
|
|
651
|
+
if current_processor is None:
|
|
652
|
+
raise ValueError(
|
|
653
|
+
"No scheduler address provided and not running inside a worker context. "
|
|
654
|
+
"Please provide a scheduler address when creating the Client outside of a worker."
|
|
655
|
+
)
|
|
656
|
+
|
|
657
|
+
# Return the scheduler address from the current processor
|
|
658
|
+
return current_processor.scheduler_address().to_address()
|
scaler/cluster/cluster.py
CHANGED
|
@@ -4,9 +4,9 @@ import os
|
|
|
4
4
|
import signal
|
|
5
5
|
from typing import Dict, List, Optional, Tuple
|
|
6
6
|
|
|
7
|
-
from scaler.utility.logging.utility import setup_logger
|
|
8
7
|
from scaler.config.types.object_storage_server import ObjectStorageConfig
|
|
9
8
|
from scaler.config.types.zmq import ZMQConfig
|
|
9
|
+
from scaler.utility.logging.utility import setup_logger
|
|
10
10
|
from scaler.worker.worker import Worker
|
|
11
11
|
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@ class Cluster(multiprocessing.get_context("spawn").Process): # type: ignore[mis
|
|
|
15
15
|
def __init__(
|
|
16
16
|
self,
|
|
17
17
|
address: ZMQConfig,
|
|
18
|
-
|
|
18
|
+
object_storage_address: Optional[ObjectStorageConfig],
|
|
19
19
|
preload: Optional[str],
|
|
20
20
|
worker_io_threads: int,
|
|
21
21
|
worker_names: List[str],
|
|
@@ -35,7 +35,7 @@ class Cluster(multiprocessing.get_context("spawn").Process): # type: ignore[mis
|
|
|
35
35
|
multiprocessing.Process.__init__(self, name="WorkerMaster")
|
|
36
36
|
|
|
37
37
|
self._address = address
|
|
38
|
-
self.
|
|
38
|
+
self._object_storage_address = object_storage_address
|
|
39
39
|
self._preload = preload
|
|
40
40
|
self._worker_io_threads = worker_io_threads
|
|
41
41
|
self._worker_names = worker_names
|
|
@@ -83,7 +83,7 @@ class Cluster(multiprocessing.get_context("spawn").Process): # type: ignore[mis
|
|
|
83
83
|
event_loop=self._event_loop,
|
|
84
84
|
name=name,
|
|
85
85
|
address=self._address,
|
|
86
|
-
|
|
86
|
+
object_storage_address=self._object_storage_address,
|
|
87
87
|
capabilities=self._per_worker_capabilities,
|
|
88
88
|
preload=self._preload,
|
|
89
89
|
io_threads=self._worker_io_threads,
|
scaler/cluster/combo.py
CHANGED
|
@@ -13,6 +13,8 @@ from scaler.config.defaults import (
|
|
|
13
13
|
DEFAULT_IO_THREADS,
|
|
14
14
|
DEFAULT_LOAD_BALANCE_SECONDS,
|
|
15
15
|
DEFAULT_LOAD_BALANCE_TRIGGER_TIMES,
|
|
16
|
+
DEFAULT_LOGGING_LEVEL,
|
|
17
|
+
DEFAULT_LOGGING_PATHS,
|
|
16
18
|
DEFAULT_MAX_NUMBER_OF_TASKS_WAITING,
|
|
17
19
|
DEFAULT_OBJECT_RETENTION_SECONDS,
|
|
18
20
|
DEFAULT_PER_WORKER_QUEUE_SIZE,
|
|
@@ -20,13 +22,12 @@ from scaler.config.defaults import (
|
|
|
20
22
|
DEFAULT_TRIM_MEMORY_THRESHOLD_BYTES,
|
|
21
23
|
DEFAULT_WORKER_DEATH_TIMEOUT,
|
|
22
24
|
DEFAULT_WORKER_TIMEOUT_SECONDS,
|
|
23
|
-
DEFAULT_LOGGING_LEVEL,
|
|
24
|
-
DEFAULT_LOGGING_PATHS,
|
|
25
25
|
)
|
|
26
|
-
from scaler.scheduler.allocate_policy.allocate_policy import AllocatePolicy
|
|
27
|
-
from scaler.utility.network_util import get_available_tcp_port
|
|
28
26
|
from scaler.config.types.object_storage_server import ObjectStorageConfig
|
|
29
27
|
from scaler.config.types.zmq import ZMQConfig
|
|
28
|
+
from scaler.scheduler.allocate_policy.allocate_policy import AllocatePolicy
|
|
29
|
+
from scaler.scheduler.controllers.scaling_policies.types import ScalingControllerStrategy
|
|
30
|
+
from scaler.utility.network_util import get_available_tcp_port
|
|
30
31
|
|
|
31
32
|
|
|
32
33
|
class SchedulerClusterCombo:
|
|
@@ -34,7 +35,7 @@ class SchedulerClusterCombo:
|
|
|
34
35
|
self,
|
|
35
36
|
n_workers: int,
|
|
36
37
|
address: Optional[str] = None,
|
|
37
|
-
|
|
38
|
+
object_storage_address: Optional[str] = None,
|
|
38
39
|
monitor_address: Optional[str] = None,
|
|
39
40
|
per_worker_capabilities: Optional[Dict[str, int]] = None,
|
|
40
41
|
worker_io_threads: int = DEFAULT_IO_THREADS,
|
|
@@ -64,10 +65,10 @@ class SchedulerClusterCombo:
|
|
|
64
65
|
else:
|
|
65
66
|
self._address = ZMQConfig.from_string(address)
|
|
66
67
|
|
|
67
|
-
if
|
|
68
|
-
self.
|
|
68
|
+
if object_storage_address is None:
|
|
69
|
+
self._object_storage_address = ObjectStorageConfig(self._address.host, get_available_tcp_port())
|
|
69
70
|
else:
|
|
70
|
-
self.
|
|
71
|
+
self._object_storage_address = ObjectStorageConfig.from_string(object_storage_address)
|
|
71
72
|
|
|
72
73
|
if monitor_address is None:
|
|
73
74
|
self._monitor_address = None
|
|
@@ -75,7 +76,7 @@ class SchedulerClusterCombo:
|
|
|
75
76
|
self._monitor_address = ZMQConfig.from_string(monitor_address)
|
|
76
77
|
|
|
77
78
|
self._object_storage = ObjectStorageServerProcess(
|
|
78
|
-
|
|
79
|
+
object_storage_address=self._object_storage_address,
|
|
79
80
|
logging_paths=logging_paths,
|
|
80
81
|
logging_level=logging_level,
|
|
81
82
|
logging_config_file=logging_config_file,
|
|
@@ -85,10 +86,10 @@ class SchedulerClusterCombo:
|
|
|
85
86
|
|
|
86
87
|
self._cluster = Cluster(
|
|
87
88
|
address=self._address,
|
|
88
|
-
|
|
89
|
+
object_storage_address=self._object_storage_address,
|
|
89
90
|
preload=None,
|
|
90
91
|
worker_io_threads=worker_io_threads,
|
|
91
|
-
worker_names=[f"{socket.gethostname().split('.')[0]}
|
|
92
|
+
worker_names=[f"{socket.gethostname().split('.')[0]}" for _ in range(n_workers)],
|
|
92
93
|
per_worker_capabilities=per_worker_capabilities or {},
|
|
93
94
|
per_worker_task_queue_size=per_worker_task_queue_size,
|
|
94
95
|
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
@@ -105,12 +106,13 @@ class SchedulerClusterCombo:
|
|
|
105
106
|
|
|
106
107
|
self._scheduler = SchedulerProcess(
|
|
107
108
|
address=self._address,
|
|
108
|
-
|
|
109
|
+
object_storage_address=self._object_storage_address,
|
|
109
110
|
monitor_address=self._monitor_address,
|
|
110
111
|
io_threads=scheduler_io_threads,
|
|
111
112
|
max_number_of_tasks_waiting=max_number_of_tasks_waiting,
|
|
112
113
|
client_timeout_seconds=client_timeout_seconds,
|
|
113
|
-
|
|
114
|
+
scaling_controller_strategy=ScalingControllerStrategy.NULL,
|
|
115
|
+
adapter_webhook_urls=(),
|
|
114
116
|
worker_timeout_seconds=worker_timeout_seconds,
|
|
115
117
|
object_retention_seconds=object_retention_seconds,
|
|
116
118
|
load_balance_seconds=load_balance_seconds,
|