Использование акторов Akka для вызова или передачи сообщений в код Python

У меня есть некоторый код анализа, написанный на Python. В настоящее время я использую Storm для обработки потоков. Поскольку Storm позволяет вызывать код Python с использованием сериализации сообщений, я вызываю код Python из Java/Scala в моих болтах Storm.

Я нашел Pykka, который представляет собой реализацию актерской модели на языке Python. Мне было интересно, есть ли способ вызвать код Python от актеров Akka? Например, возможно ли передать сообщение от актеров Акки актерам Пикки?

2 ответа

Решение

Я сомневаюсь, что проводные протоколы для двух реализаций модели удаленного актера могли бы быть легко соединены, но вы могли бы использовать 0MQ между кодом Scala и приложением Python. Akka позволяет передавать сообщения через 0MQ, поэтому после некоторой настройки код Scala может работать с приложением Python, как и любой другой актер, хотя я не уверен, что это будет означать на стороне Python.

Еще одна возможность, которую стоит рассмотреть, - запустить код анализа Python на JVM с использованием Jython. У вас может быть актер Scala, вызывающий функцию / метод Jython. Но если ваш код Python использует модули расширения C, вам придется искать альтернативы.

Еще одна возможность (также при условии, что вы не используете модули расширения C) - это попробовать конвертер py2scala; для кода анализа данных это может сделать достойную работу. Предположительно, это даст вам наиболее эффективное решение.

Вы также можете использовать Jep бежать врезанным CPython в актере JVM для полного доступа к родному (C) Python пакеты.

Смотрите слайд 5 здесь. Смешивание Python и Java.

Если пакеты Python, которые вам нужны, не являются потокобезопасными, то можете использовать удаленный Akka актеры. См. https://github.com/alpinedatalabs/alpine-r/blob/35209af47f896450e4f8f8745a80595d01035ca3/server/src/main/resources/application.conf#L4

Чтобы сделать Scala в Python гладкая попытка ScalaPy - также построен на вершине Jep,

Технически что-то подобное должно работать и для R, используя Renjin - GPL К сожалению так надо быть осторожным с запуском встроенного.

Другие вопросы по тегам