unix - 后台 Julia TCP 服务器
问题描述
我的用例
创建一个 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,但如果它最终工作量太大,我会被说服。
解决方案
我在评论中放了几个选项。现在最简单的方法是删除代码@async
中前面的begin
语句并运行(我假设是 Linux):
nohup julia app.jl &
当然,您可以添加1>
和2>
重定向标准输出和标准错误,将其作为cron
工作等。
JuliaWebAPI
但是, +ZeroMQ
对于生产系统将更加健壮,并且Distributed
对于计算解决方案将更加方便。
推荐阅读
- c# - 如何以阿拉伯语格式 WPF 获取一周中的所有日期名称?
- c++ - 将 n 个向量组合成一个 n 元组向量
- javascript - Laravel Livewire:无法读取未定义的属性“$wire”
- android - TextInputLayout 的全局样式不起作用
- python - 使用 lxml 查找多个标签的值
- node.js - 配置后无法在 Sentry Releases 页面上查看提交
- php - 如何动态过滤掉 MySQL 中的某些行以查询它们?
- django - 在 django 中使用与外键相同模型的记录
- powershell - 在 Powershell 脚本上使用 Invoke-RestMethod 调用 Rest 调用时出现奇怪的行为
- google-analytics - GA4 跟踪总收入