Задать вопрос
@HgeN

Как организовать пользовательский скриптинг в python-приложении?

Есть необходимость реализовать возможность написания кастомных обработчиков логики. Подразумевается, что писать обработчики придется простым пользователям мало знакомым с программированием.

При этом само приложение асинхронно (tornado) и нельзя допускать чтобы пользовательский скрипт заблокировал основной поток исполнения. Смотрел в сторону альтернативных интерпретаторов и гринлетов, но не нашел хороших примеров реализации подобной задачи.
  • Вопрос задан
  • 2387 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
alexclear
@alexclear
A cat
Исходя из требования невозможности блокировки стейт-машины Tornado следует вывод о необходимости создания пула обработчиков пользовательских скриптов (на чем бы они ни были) и управления этим пулом. Планировщик может работать простейшим образом - при старте создается N воркеров, далее, при назначении задания на воркер, он помечается как занятый. Когда пользовательский скрипт отработал, воркер освобождается. Если все воркеры заняты, пользовательские задачи стоят в очереди,

кстати, если с самого начала взять систему, имплементирующую очереди - RabbitMQ, например, то все становится еще лучше - вместо пула обработчиков в приложении создается пул консьюмеров соотв. очереди в RabbitMQ, причем, консьюмеров можно добавлять динамически, не релоадя никакие конфиги торнадо-сервера.
А вот на чем будут написаны сами пользовательские скрипты - это вообще неважно, хоть на VB.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы