Библиотека для вызова функций и генераторов из Python-модулей, расположенных в других виртуальных окружениях, включая окружения с разными версиями Python и конфликтующими зависимостями.
Project description
MultiEnvEmployer
MultiEnvEmployer — Python-библиотека для вызова функций и генераторов из Python-модулей, расположенных в других virtualenv, включая окружения с разными версиями Python и конфликтующими зависимостями.
Библиотека предназначена для ситуаций, когда код нельзя импортировать напрямую, но его необходимо вызывать и контролировать из одного основного процесса.
Основные возможности
- запуск Python-кода в изолированных virtualenv
- поддержка разных версий Python
- вызов функций как обычных Python-функций
- передача данных между процессами
- поддержка
return,yieldи потокового возврата больших данных - перехват
print()без нарушения IPC - контроль времени выполнения (таймауты)
- обработка ошибок как обычных исключений
- файловое кэширование результатов
Установка
pip install multi-env-employer
Быстрый старт
from MultiEnvEmployer import Employer, RemoteModule
emp = Employer(
project_dir="/path/to/project",
venv_path="/path/to/venv"
)
moduleA = RemoteModule(emp, "moduleA")
result = moduleA.add(2, 4)
print(result)
Модуль moduleA.py должен находиться в указанной директории проекта и будет выполнен в другом virtualenv.
Как это работает
- код выполняется в отдельном Python-процессе
- используется указанный virtualenv
- обмен данными идёт через бинарный канал (
pickle) - ошибки и
print()корректно проксируются в основной процесс
Со стороны пользователя вызов выглядит как обычный Python-код.
Возврат данных
Поддерживаются:
- обычный
return - генераторы (
yield) - потоковый возврат больших данных (автоматически)
Для больших объектов данные передаются частями, чтобы не перегружать память.
Таймауты
Поддерживаются режимы:
- без ограничений
- жёсткий таймаут
- таймаут по отсутствию активности (
progress)
При превышении времени worker-процесс будет остановлен.
Обработка ошибок
Ошибки внутри удалённого кода пробрасываются как Python-исключения:
RemoteExecutionErrorRemoteTimeoutErrorRemoteImportError- и другие
Для кого эта библиотека
MultiEnvEmployer полезен, если:
- нужно запускать код с конфликтующими зависимостями
- требуется поддержка нескольких версий Python
- нельзя использовать import из-за архитектурных ограничений
- нужен контроль выполнения кода во время runtime
Это не dev-инструмент, а инфраструктурный слой выполнения.
Документация и исходный код
Полная документация, архитектура и примеры доступны на GitHub:
https://github.com/REYIL/MultiEnvEmployer
Лицензия
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file multi_env_employer-1.0.0.tar.gz.
File metadata
- Download URL: multi_env_employer-1.0.0.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4ac408826d4a4007588d346bcb9ab998fd8d191ae8367fcc4fd01c9b07fac70
|
|
| MD5 |
04a7ecfbab21501c8c3ec8410def7c61
|
|
| BLAKE2b-256 |
90f5503207207cfdf5b1086786e9745182c05cbcd1932a0273a64133a206a142
|
File details
Details for the file multi_env_employer-1.0.0-py3-none-any.whl.
File metadata
- Download URL: multi_env_employer-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25591d3c630e4bde7cf479c4ba7b86f2ea951c7bc1aff9236c8b76d5cf26d930
|
|
| MD5 |
1792e896308fb187f7c02a7046b6e106
|
|
| BLAKE2b-256 |
8988ec2338e8d78d95e08e3a5987209e3f838ff5223a1026f0626799421e0a4c
|