Есть несколько возможных решений.Все они предполагают разные способы отправки команд на работающую сессию Джулии.Первые несколько, которые приходят мне на ум:
- использовать сокеты, как объяснено в https://docs.julialang.org/en/v1/manual/networking-and-streams/#A-simple-TCP-example-1
- настроить HTTP-сервер, например, используя https://github.com/JuliaWeb/HTTP.jl
- useименованные каналы, как объяснено в Именованный канал не ожидает завершения в bash
- обмениваться информацией, например, через файловую систему (например, заставить Джулию сканировать какую-либо папку для файлов
.jl
и, если она их найдет)там они выполняются и перемещаются в другую папку или удаляются) - это, вероятно, проще всего реализовать правильно
Во всех решениях вы можете отправить команду Юлии, выполнив некоторую команду оболочки.
Независимо от того, какой подход вы предпочитаете, ключевой задачей является дезинфекция кода для правильной обработки ошибок (т. Е. Ситуация, когда вы посылаете какую-то команду в сеанс Julia, и она падает, или когда вы отправляете запросы быстрее, чем Джулия может их обработать).Это особенно важно, если вы хотите, чтобы сервер Julia был отключен от терминала.
В качестве примечания: при использовании модуля Distributed из stdlib в Julia для многопроцессорной обработки вы фактически делаете очень похожую вещь (но связьот Юлии до Юлии), поэтому вы также можете посмотреть, как реализован этот модуль, чтобы понять, как это можно сделать.