Какие решения для фоновой обработки заданий существуют для 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, отсюда и название. (Это город!)

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