Какие решения для фоновой обработки заданий существуют для Common Lisp?
Мне нужно решение для фоновой обработки заданий. Очередь задач, где работники могут быть удаленными процессами на разных машинах.
Я искал по интернету, но нашел только Psychiq, который находится в Альфа и не рекомендуется для производства.
Я не верю, что для такого зрелого языка, как Common Lisp, нет других решений.
Где они?
Обновление:
Возможные решения:
- lfarm (предложено @coredump).
- Gearman с клиентом / работником, использующим cl-gearman (обнаружил сам в еще одной сессии Google).
1 ответ
Я не уверен, что это именно то, что вам нужно, но LFARM может быть хорошим кандидатом:
lfarm - это распределенная версия lparallel, которая заменяет рабочие потоки удаленными процессами. Например, lfarm:pmap разделит входную последовательность (и), отправит детали на удаленные машины для отображения, а затем объединит результаты. Аналогично, lfarm:future оборачивает выполнение удаленных задач в метафору обещаний. Большая часть API параллельного ядра сохраняется с небольшими изменениями.
В репозитории github есть несколько примеров.
Смотрите также Erlangen для распределенного Erlang-подобного подхода, основанного на собственных потоках.
Erlangen передает распределенную асинхронную передачу сообщений в Clozure Common Lisp. Он координирует процессы Clozure CL (собственные потоки) с помощью передачи сообщений и поддерживает отказоустойчивые программные архитектуры с использованием деревьев наблюдения. Он также прозрачно распределен, все его функции бесперебойно работают в IP-сетях. Таким образом, его можно использовать для создания приложений в нескольких экземплярах Clozure CL на разных хостах. Erlangen заимствует много идей из Erlang/OTP, отсюда и название. (Это город!)