【发布时间】:2016-04-13 08:30:25
【问题描述】:
我正在使用 Julia v0.4.5 并有这个简单的 Julia 脚本来订阅 redis 频道:
using Redis
subHandler(x) = print(x)
errHandler(err) = print(err)
redisConn = RedisConnection(host="127.0.0.1", port=6379, db=0)
flushall(redisConn)
subConn = open_subscription(redisConn, errHandler)
subscribe(subConn, "julia-channel", subHandler)
如果我在 Julia repl 中逐行键入此脚本,它会按预期工作。
但是,如果我将此代码放入脚本文件并从 shell 运行:
julia sub.jl
几秒钟后,Julia 退出时没有打印任何内容..
也许我应该将订阅放入某种线程或循环中(以保持 julia 运行)?
【问题讨论】:
-
println(subscribe(subConn, "julia-channel", subHandler))?
-
我猜@FGFW 是在正确的轨道上。在 REPL 中运行时,您可能只是看到最后一行的输出(相当于在最后一行调用
display)。如果您希望脚本具有交互性,则需要将其添加到您的脚本中! -
@FGFW println(subscribe(subConn, "julia-channel", subHandler)) 在 terimal 上打印 '47' 并且 julia 仍然退出。
-
@DanielArndt 在 repl 中,最后一行不打印任何内容。当订阅的频道上有数据发布时,subHandler(不是 subscribe())打印订阅的数据。根据 redis.jl 自述文件,subscribe()“生成一个在后台运行的例程以处理从服务器接收到的事件”。因此,我猜后台程序应该让 julia 继续运行,但事实并非如此......
-
啊,有道理。 Julia 肯定不会为后台任务保持活力,这在过去给我造成了一些奇怪的“管道关闭”问题,尤其是在我尝试打印东西的测试中。
标签: redis julia publish-subscribe