opengris-scaler 1.12.11__tar.gz → 1.12.12__tar.gz
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.11 → opengris_scaler-1.12.12}/PKG-INFO +3 -1
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/README.md +2 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/tutorials/features.rst +22 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/client.py +26 -3
- opengris_scaler-1.12.12/scaler/version.txt +1 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/processor.py +6 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/processor_holder.py +2 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/processor_manager.py +3 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/worker.py +1 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_client.py +8 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_nested_task.py +34 -0
- opengris_scaler-1.12.11/scaler/version.txt +0 -1
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.clang-format +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/3rd-party-libraries-compile/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/3rd-party-libraries-download/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/3rd-party-libraries-install/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/compile-libraries/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/create-artifacts/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/harden-check/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/publish-doc/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/run-linter/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/run-test/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/setup-env/action.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/dependabot.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/workflows/build-and-test.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/workflows/codeql.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/workflows/dependency-review.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/workflows/publish-artifact.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/workflows/publish-documentation.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/workflows/scorecard.yml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.gitignore +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/CMakePresets.json +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/CONTRIBUTING.md +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/LICENSE +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/LICENSE.spdx +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/NOTICE +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/benchmarks/dask_local_test.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/benchmarks/dask_remote_test.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/benchmarks/scaler_test.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/.gitignore +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/Makefile +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/make.bat +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/requirements_docs.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/_static/style.css +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/_templates/layout.html +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/conf.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/index.rst +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/tutorials/configuration.rst +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/tutorials/development.rst +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/tutorials/examples.rst +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/tutorials/images/architecture.png +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/tutorials/quickstart.rst +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/downloaded/capnproto-c++-1.1.0.tar.gz +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/applications/downloaded_data.csv +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/applications/implied_volatility.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/applications/pillow.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/applications/requirements_applications.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/applications/timeseries.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/applications/yfinance_historical_price.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/automated_echo_client.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/echo_client.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/echo_server.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/pingpong.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/pub_server.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/remove_iosocket.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/sub_client.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/timestamp.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/disconnect_client.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/graphtask_client.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/graphtask_nested_client.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/images/cat_1.jpg +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/images/cat_2.jpg +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/map_client.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/nested_client.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/readme.md +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/send_object_client.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/simple_client.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/task_capabilities.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/pyproject.toml +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/renovate.json +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/run_cluster.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/run_object_storage_server.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/run_scheduler.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/run_top.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/run_webui.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/run_worker_adapter_native.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/run_worker_adapter_symphony.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/about.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/client_agent.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/disconnect_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/future_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/heartbeat_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/object_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/task_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/future.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/object_buffer.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/object_reference.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/serializer/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/serializer/default.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/serializer/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/cluster/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/cluster/cluster.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/cluster/combo.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/cluster/object_storage_server.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/cluster/scheduler.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/defaults.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/loader.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/cluster.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/native_worker_adapter.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/object_storage_server.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/scheduler.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/symphony_worker_adapter.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/top.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/webui.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/types/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/types/object_storage_server.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/types/worker.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/types/zmq.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/cluster.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/object_storage_server.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/scheduler.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/top.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/webui.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/worker_adapter_native.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/worker_adapter_symphony.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/async_binder.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/async_connector.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/async_object_storage_connector.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/sync_connector.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/sync_object_storage_connector.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/sync_subscriber.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/utility.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/_ymq.pyi +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/bytes.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/common.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/configuration.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/epoll_context.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/epoll_context.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/error.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/event_loop.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/event_loop_thread.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/event_loop_thread.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/event_manager.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/interruptive_concurrent_queue.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/io_context.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/io_context.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/io_socket.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/io_socket.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/iocp_context.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/iocp_context.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/logging.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/message.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/message_connection.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/message_connection_tcp.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/message_connection_tcp.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/network_utils.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/bytes.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/exception.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/gil.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/io_context.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/io_socket.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/message.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/python.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/ymq.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/ymq.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/readme.md +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/simple_interface.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/simple_interface.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_client.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_client.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_operations.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_server.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_server.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/third_party/concurrentqueue.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/timed_queue.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/timestamp.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/typedefs.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/utils.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/ymq/ymq.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/constants.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/defs.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/io_helper.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/io_helper.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/message.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/message.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/object_manager.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/object_manager.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/object_storage_server.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/object_storage_server.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/object_storage/pymod_object_storage_server.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/capnp/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/capnp/_python.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/capnp/common.capnp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/capnp/message.capnp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/capnp/object_storage.capnp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/capnp/status.capnp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/introduction.md +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/python/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/python/common.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/python/message.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/python/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/python/object_storage.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/python/status.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/protocol/worker.md +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/allocate_policy.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/capability_allocate_policy.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/even_load_allocate_policy.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/balance_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/client_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/config_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/graph_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/information_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/object_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/scaling_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/task_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/worker_controller.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/object_usage/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/object_usage/object_tracker.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/scheduler.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/task/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/task/task_state_machine.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/scheduler/task/task_state_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/constants.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/live_display.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/memory_window.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/setting_page.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/task_graph.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/task_log.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/utility.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/webui.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/ui/worker_processors.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/debug.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/event_list.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/event_loop.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/exceptions.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/formatter.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/graph/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/graph/optimization.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/graph/topological_sorter.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/graph/topological_sorter_graphblas.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/identifiers.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/logging/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/logging/decorators.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/logging/scoped_logger.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/logging/utility.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/many_to_many_dict.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/metadata/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/metadata/profile_result.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/metadata/task_flags.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/network_util.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/one_to_many_dict.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/queues/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/queues/async_indexed_queue.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/queues/async_priority_queue.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/queues/async_sorted_priority_queue.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/queues/indexed_queue.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/utility/serialization.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/heartbeat_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/mixins.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/object_cache.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/streaming_buffer.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/profiling_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/task_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/timeout_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/preload.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/native.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/callback.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/heartbeat_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/message.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/task_manager.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/worker.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/worker_adapter.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scripts/build.sh +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scripts/library_tool.ps1 +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scripts/library_tool.sh +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scripts/test.sh +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/slides/Effortless Distributed Computing in Python - FOSDEM 2025.pdf +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/slides/OSFF 2025 London.pdf +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/object_storage/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/object_storage/test_object_manager.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/object_storage/test_object_storage_server.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/common.h +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/__init__.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/main.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/passthrough.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/randomly_drop_packets.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/send_rst_to_client.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/types.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/cpp/ymq/test_ymq.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/io/ymq/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/io/ymq/test_logging.cpp +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_async_indexed_queue.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_async_priority_queue.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_async_sorted_priority_queue.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_balance.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_capabilities.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_capability_allocate_policy.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_cluster.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_cluster_config.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_cluster_disconnect.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_config_types.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_death_timeout.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_future.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_graph.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_indexed_queue.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_object_usage.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_profiling.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_protected.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_scaling.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_scheduler_config.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_serializer.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/test_ui.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/tests/utility.py +0 -0
- {opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/version.h.in +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.12
|
|
4
4
|
Summary: OpenGRIS Scaler Distribution Framework
|
|
5
5
|
Author-Email: Citi <opensource@citi.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -365,6 +365,8 @@ with Client(address="tcp://127.0.0.1:2345") as client:
|
|
|
365
365
|
print(future.result()) # 21
|
|
366
366
|
```
|
|
367
367
|
|
|
368
|
+
**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.
|
|
369
|
+
|
|
368
370
|
## Task Routing and Capability Management
|
|
369
371
|
|
|
370
372
|
> **Note**: This feature is experimental and may change in future releases.
|
|
@@ -322,6 +322,8 @@ with Client(address="tcp://127.0.0.1:2345") as client:
|
|
|
322
322
|
print(future.result()) # 21
|
|
323
323
|
```
|
|
324
324
|
|
|
325
|
+
**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.
|
|
326
|
+
|
|
325
327
|
## Task Routing and Capability Management
|
|
326
328
|
|
|
327
329
|
> **Note**: This feature is experimental and may change in future releases.
|
|
@@ -118,6 +118,28 @@ Tasks can depend on other tasks' result without using graph.
|
|
|
118
118
|
.. literalinclude:: ../../../examples/nested_client.py
|
|
119
119
|
:language: python
|
|
120
120
|
|
|
121
|
+
Nested Client Scheduler Address
|
|
122
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
123
|
+
|
|
124
|
+
When creating a ``Client`` inside a task (nested client), the scheduler ``address`` parameter is optional. If omitted, the client automatically detects and uses the scheduler address from the worker context. This is particularly useful when workers are behind firewalls or NAT, where the scheduler address accessible from inside the worker may differ from external addresses.
|
|
125
|
+
|
|
126
|
+
**Automatic Address Detection:**
|
|
127
|
+
|
|
128
|
+
.. code:: python
|
|
129
|
+
|
|
130
|
+
from scaler import Client
|
|
131
|
+
|
|
132
|
+
def nested_task():
|
|
133
|
+
# Automatically uses worker's scheduler address if no address is provided to Client()
|
|
134
|
+
with Client() as client:
|
|
135
|
+
result = client.submit(lambda x: x * 2, 5).result()
|
|
136
|
+
return result
|
|
137
|
+
|
|
138
|
+
# Main client
|
|
139
|
+
client = Client(address="tcp://127.0.0.1:2345")
|
|
140
|
+
future = client.submit(nested_task)
|
|
141
|
+
print(future.result()) # 10
|
|
142
|
+
|
|
121
143
|
Dynamically Building Graph Within a Task
|
|
122
144
|
----------------------------------------
|
|
123
145
|
|
|
@@ -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__(
|
|
@@ -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()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.12.12
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/processor.py
RENAMED
|
@@ -37,6 +37,7 @@ class Processor(multiprocessing.get_context("spawn").Process): # type: ignore
|
|
|
37
37
|
self,
|
|
38
38
|
event_loop: str,
|
|
39
39
|
agent_address: ZMQConfig,
|
|
40
|
+
scheduler_address: ZMQConfig,
|
|
40
41
|
storage_address: ObjectStorageConfig,
|
|
41
42
|
preload: Optional[str],
|
|
42
43
|
resume_event: Optional[EventType],
|
|
@@ -50,6 +51,7 @@ class Processor(multiprocessing.get_context("spawn").Process): # type: ignore
|
|
|
50
51
|
|
|
51
52
|
self._event_loop = event_loop
|
|
52
53
|
self._agent_address = agent_address
|
|
54
|
+
self._scheduler_address = scheduler_address
|
|
53
55
|
self._storage_address = storage_address
|
|
54
56
|
self._preload = preload
|
|
55
57
|
|
|
@@ -74,6 +76,10 @@ class Processor(multiprocessing.get_context("spawn").Process): # type: ignore
|
|
|
74
76
|
"""Returns the current Processor instance controlling the current process, if any."""
|
|
75
77
|
return _current_processor.get()
|
|
76
78
|
|
|
79
|
+
def scheduler_address(self) -> ZMQConfig:
|
|
80
|
+
"""Returns the scheduler address this processor's worker is connected to."""
|
|
81
|
+
return self._scheduler_address
|
|
82
|
+
|
|
77
83
|
def current_task(self) -> Optional[Task]:
|
|
78
84
|
return self._current_task
|
|
79
85
|
|
|
@@ -19,6 +19,7 @@ class ProcessorHolder:
|
|
|
19
19
|
self,
|
|
20
20
|
event_loop: str,
|
|
21
21
|
agent_address: ZMQConfig,
|
|
22
|
+
scheduler_address: ZMQConfig,
|
|
22
23
|
storage_address: ObjectStorageConfig,
|
|
23
24
|
preload: Optional[str],
|
|
24
25
|
garbage_collect_interval_seconds: int,
|
|
@@ -43,6 +44,7 @@ class ProcessorHolder:
|
|
|
43
44
|
self._processor = Processor(
|
|
44
45
|
event_loop=event_loop,
|
|
45
46
|
agent_address=agent_address,
|
|
47
|
+
scheduler_address=scheduler_address,
|
|
46
48
|
storage_address=storage_address,
|
|
47
49
|
preload=preload,
|
|
48
50
|
resume_event=self._resume_event,
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/worker/agent/processor_manager.py
RENAMED
|
@@ -23,6 +23,7 @@ class VanillaProcessorManager(ProcessorManager):
|
|
|
23
23
|
identity: WorkerID,
|
|
24
24
|
event_loop: str,
|
|
25
25
|
address_internal: ZMQConfig,
|
|
26
|
+
scheduler_address: ZMQConfig,
|
|
26
27
|
preload: Optional[str],
|
|
27
28
|
garbage_collect_interval_seconds: int,
|
|
28
29
|
trim_memory_threshold_bytes: int,
|
|
@@ -34,6 +35,7 @@ class VanillaProcessorManager(ProcessorManager):
|
|
|
34
35
|
|
|
35
36
|
self._identity = identity
|
|
36
37
|
self._event_loop = event_loop
|
|
38
|
+
self._scheduler_address = scheduler_address
|
|
37
39
|
self._preload = preload
|
|
38
40
|
|
|
39
41
|
self._garbage_collect_interval_seconds = garbage_collect_interval_seconds
|
|
@@ -299,6 +301,7 @@ class VanillaProcessorManager(ProcessorManager):
|
|
|
299
301
|
self._current_holder = ProcessorHolder(
|
|
300
302
|
self._event_loop,
|
|
301
303
|
self._address_internal,
|
|
304
|
+
self._scheduler_address,
|
|
302
305
|
storage_address,
|
|
303
306
|
self._preload,
|
|
304
307
|
self._garbage_collect_interval_seconds,
|
|
@@ -139,6 +139,7 @@ class Worker(multiprocessing.get_context("spawn").Process): # type: ignore
|
|
|
139
139
|
identity=self._ident,
|
|
140
140
|
event_loop=self._event_loop,
|
|
141
141
|
address_internal=self._address_internal,
|
|
142
|
+
scheduler_address=self._address,
|
|
142
143
|
preload=self._preload,
|
|
143
144
|
garbage_collect_interval_seconds=self._garbage_collect_interval_seconds,
|
|
144
145
|
trim_memory_threshold_bytes=self._trim_memory_threshold_bytes,
|
|
@@ -320,6 +320,14 @@ class TestClient(unittest.TestCase):
|
|
|
320
320
|
# but new tasks should work fine
|
|
321
321
|
self.assertEqual(client.submit(round, 3.14).result(), 3.0)
|
|
322
322
|
|
|
323
|
+
def test_client_no_address_outside_worker(self):
|
|
324
|
+
"""Test that creating a Client without an address outside worker context raises ValueError."""
|
|
325
|
+
with self.assertRaises(ValueError) as context:
|
|
326
|
+
Client()
|
|
327
|
+
|
|
328
|
+
self.assertIn("No scheduler address provided", str(context.exception))
|
|
329
|
+
self.assertIn("not running inside a worker context", str(context.exception))
|
|
330
|
+
|
|
323
331
|
|
|
324
332
|
class TestClientPreload(unittest.TestCase):
|
|
325
333
|
# Separate class for preload functionality with separate cluster to avoid interfering with time-sensitive tests
|
|
@@ -34,6 +34,18 @@ class TestNestedTask(unittest.TestCase):
|
|
|
34
34
|
result = client.submit(fibonacci, client, 8).result()
|
|
35
35
|
self.assertEqual(result, 21)
|
|
36
36
|
|
|
37
|
+
def test_nested_task_auto_address(self) -> None:
|
|
38
|
+
"""Test nested task with automatic scheduler address detection."""
|
|
39
|
+
with Client(self.address) as client:
|
|
40
|
+
result = client.submit(nested_task_auto_address, 5).result()
|
|
41
|
+
self.assertEqual(result, 25)
|
|
42
|
+
|
|
43
|
+
def test_nested_task_explicit_address(self) -> None:
|
|
44
|
+
"""Test nested task with explicit scheduler address (honors user-provided address)."""
|
|
45
|
+
with Client(self.address) as client:
|
|
46
|
+
result = client.submit(nested_task_explicit_address, self.address, 7).result()
|
|
47
|
+
self.assertEqual(result, 49)
|
|
48
|
+
|
|
37
49
|
|
|
38
50
|
def parent_task_arg_client(client: Client) -> int:
|
|
39
51
|
iterable = [(v,) for v in range(0, N_TASKS)]
|
|
@@ -60,3 +72,25 @@ def fibonacci(client: Client, n: int):
|
|
|
60
72
|
a = client.submit(fibonacci, client, n - 1)
|
|
61
73
|
b = client.submit(fibonacci, client, n - 2)
|
|
62
74
|
return a.result() + b.result()
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def nested_task_auto_address(value: int) -> int:
|
|
78
|
+
"""Test function that creates a nested client without providing an address."""
|
|
79
|
+
# Client should automatically detect worker context and use worker's scheduler address
|
|
80
|
+
client = Client()
|
|
81
|
+
try:
|
|
82
|
+
result = client.submit(nested_task, value).result()
|
|
83
|
+
return result
|
|
84
|
+
finally:
|
|
85
|
+
client.disconnect()
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def nested_task_explicit_address(scheduler_address: str, value: int) -> int:
|
|
89
|
+
"""Test function that creates a nested client with an explicit address."""
|
|
90
|
+
# Client should honor the explicitly provided address even though running in worker context
|
|
91
|
+
client = Client(address=scheduler_address)
|
|
92
|
+
try:
|
|
93
|
+
result = client.submit(nested_task, value).result()
|
|
94
|
+
return result
|
|
95
|
+
finally:
|
|
96
|
+
client.disconnect()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.12.11
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/compile-libraries/action.yml
RENAMED
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/actions/create-artifacts/action.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/.github/workflows/publish-documentation.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/docs/source/tutorials/images/architecture.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/applications/downloaded_data.csv
RENAMED
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/applications/implied_volatility.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/examples/cpp/ymq/automated_echo_client.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/disconnect_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/client/agent/heartbeat_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/native_worker_adapter.py
RENAMED
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/object_storage_server.py
RENAMED
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/section/symphony_worker_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/config/types/object_storage_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/object_storage_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/worker_adapter_native.py
RENAMED
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/entry_points/worker_adapter_symphony.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/async_object_storage_connector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.11 → opengris_scaler-1.12.12}/scaler/io/sync_object_storage_connector.py
RENAMED
|
File without changes
|
|
File without changes
|