Distributed events processor, based on stackless technology of PyPy3


License
GPL-3.0
Install
pip install powny==4.5.0

Documentation

Build Status Coverage Status Latest Version Dependency Status

Что это?

Powny - это распределенная система исполнения функций по требованию. Функции пишутся на обычном Python и могут запрашивать создание контрольных точек во время работы. Таким образом, если исполнение было прервано в результате сбоя на одной из нод, другая нода продолжит выполнять функцию с последней контрольной точки. В основе принципа работы Powny лежит использование континулетов - части stackless-возможностей PyPy. Каждая задача представляется в виде континулета, который, при запросе создания контрольной точки, сериализуется и сохраняется в распределенное хранилище (сейчас это - Apache ZooKeeper). Восстановление заключается в десериализации и запуске процесса, исполняющего функцию.

Установка для отладки

Вам понадобятся ZooKeeper и PyPy3 с pip. Для установки Powny выполните такие команды:

git clone https://github.com/yandex-sysmon/powny.git
cd powny
pypy3 -m pip install --user -e

Powny будет установлен в отладочном режиме. Для запуска системы используйте такие команды (находясь в каталоге powny):

~/.local/bin/powny-api -l debug
~/.local/bin/powny-worker -l debug
~/.local/bin/powny-collector -l debug

По-умолчанию, вам будут доступны функции из каталога scripts.

TODO & FIXME

  • Контекстный логгер не пиклится, нужно удалять его объект из области видимости перед чекпоинтом.
  • Какая-то странная бага с относительным импортированием в хелперах, пока использую абсолютное:
File "/home/mdevaev/projects/yandex/powny/powny/helpers/email/__init__.py", line 13, in <module>
    from ...core.optconf import Option
ImportError: No module named powny.helpers.core
  • Тест для воркера: DELETE.
  • Тест для push-back в процессе коллектора.
  • Тест для секретных конфигов.