Фоновый Юлия TCP сервер - PullRequest
       9

Фоновый Юлия TCP сервер

0 голосов
/ 12 февраля 2019

Мой вариант использования

Создайте фоновый процесс Julia, который я могу вызвать с другого сервера.Когда я передаю ему некоторые аргументы, он делает вещи, отправляет ответ, а затем ждет следующего запроса.

Что я пробовал

Если есть еще «Джулия»способ сделать это, дайте мне знать, но я подумал, что это хороший вариант использования для TCP-сервера, как в примере с документами:

using Sockets

@async begin
       server = listen(2001)
       while true
           sock = accept(server)
           @async while isopen(sock)
               write(sock,readline(sock))
           end
       end
   end

..., который прекрасно работает в REPL!но я хочу, чтобы он постоянно работал в фоновом режиме, поэтому мне не нужно держать REPL открытым.

Когда я помещаю вышеприведенный файл в app.jl и запускаю julia app.jl, он, очевидно, запускается, а затем мгновенно завершает работу.Какой лучший способ сохранить его работу, даже после закрытия моего терминала?

Изменения

  • Мой клиент - сервер Elixir.
  • Я бы предпочел TCP вместо HTTP только из соображений производительности, но меня могут убедить, если это окажется слишком большой работой.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

На самом деле для кого-либо в будущем лучшим ответом (в зависимости от вашего варианта использования) может быть добавление этого в конец файла:

Base.JLOptions().isinteractive==0 && wait()

, что приведет кэто не выйти автоматически.Внешние библиотеки или фреймворки не требуются.

0 голосов
/ 12 февраля 2019

Я поставил несколько вариантов в комментарии.Теперь самый простой подход - удалить @async перед оператором begin в вашем коде и запустить (я полагаю, Linux):

nohup julia app.jl &

Конечно, вы можете добавить 1> и 2>чтобы перенаправить стандартный вывод и стандартную ошибку, укажите это как cron задание и т. д.

JuliaWebAPI + ZeroMQ будет, однако, более устойчивым для производственных систем, а Distributed будет более удобным для вычислительных решений.,

...