我正在使用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运行)?
答案 0 :(得分:2)
受到FGFW和DanielArndt的启发,我找到了答案 简而言之,在subscribe()之后,添加以下代码以保持julia运行:
while (true)
sleep(1)
end
说明:
根据redis.jl自述文件,subscribe()生成一个后台例程来处理服务器发布事件。但是,在脚本模式下,julia主线程(例程)在subscribe()之后退出,因此后台例程也会终止。 while - sleep循环可防止主循环退出
Repl维护用户交互循环,因此我们不必手动循环。