Skip to main content

Библиотека для вызова функций и генераторов из Python-модулей, расположенных в других виртуальных окружениях, включая окружения с разными версиями Python и конфликтующими зависимостями.

Project description

License  OS  Library Python  Module Python 

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-исключения:

  • RemoteExecutionError
  • RemoteTimeoutError
  • RemoteImportError
  • и другие

Для кого эта библиотека

MultiEnvEmployer полезен, если:

  • нужно запускать код с конфликтующими зависимостями
  • требуется поддержка нескольких версий Python
  • нельзя использовать import из-за архитектурных ограничений
  • нужен контроль выполнения кода во время runtime

Это не dev-инструмент, а инфраструктурный слой выполнения.


Документация и исходный код

Полная документация, архитектура и примеры доступны на GitHub:

https://github.com/REYIL/MultiEnvEmployer


Лицензия

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multi_env_employer-1.0.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multi_env_employer-1.0.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

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

Hashes for multi_env_employer-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f4ac408826d4a4007588d346bcb9ab998fd8d191ae8367fcc4fd01c9b07fac70
MD5 04a7ecfbab21501c8c3ec8410def7c61
BLAKE2b-256 90f5503207207cfdf5b1086786e9745182c05cbcd1932a0273a64133a206a142

See more details on using hashes here.

File details

Details for the file multi_env_employer-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for multi_env_employer-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 25591d3c630e4bde7cf479c4ba7b86f2ea951c7bc1aff9236c8b76d5cf26d930
MD5 1792e896308fb187f7c02a7046b6e106
BLAKE2b-256 8988ec2338e8d78d95e08e3a5987209e3f838ff5223a1026f0626799421e0a4c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page