后台Julia TCP服务器

时间:2019-02-12 17:28:15

标签: unix tcp julia

我的用例

创建一个Julia后台进程,可以从其他服务器调用该进程。当我传递一些参数时,它会填充,发送响应,然后等待下一个请求。

我尝试过的事情

如果还有更多的'Julia'方式,请告诉我,但是我认为这将是TCP服务器的一个好用例,就像docs'示例中一样:

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 :(得分:1)

我在评论中添加了几个选项。 现在,最简单的方法是删除代码中// ClientSideClassroom class constructor this.students = this.doc.data().students.map(studentRef => { return // find the student in the studentsSnapshot with studentRef }) 语句前面的@async并运行(我假设是Linux):

begin

当然,您可以添加nohup julia app.jl & 1>来重定向标准输出和标准错误,将其作为2>作业等。

cron + JuliaWebAPI对于生产系统将更加健壮,而ZeroMQ对于计算解决方案将更加方便。

答案 1 :(得分:0)

实际上,对于将来的任何人,一个更好的答案(取决于您的用例)可能是将其添加到文件的底部:

Error response from daemon: legacy plugin: Plugin.Activate: {"message":"page not found"}

这将导致它不会自动退出。无需外部库或框架。