Julia 在 HTTP WebSocket 块中挂起异常
Posted
技术标签:
【中文标题】Julia 在 HTTP WebSocket 块中挂起异常【英文标题】:Julia hangs on exceptions in HTTP WebSocket block 【发布时间】:2021-04-07 08:44:13 【问题描述】:我是 Julia 新手,在侦听 WebSocket 流时尝试抛出异常时遇到了一些奇怪的行为。例如,下面的代码 sn -p 在打印连接消息后会永远挂起:
using HTTP
HTTP.WebSockets.open("wss://www.bitmex.com/realtime") do ws
message = String(readavailable(ws))
println(message)
error("This is an error")
end
如果引用了未定义的变量,这也会冻结(这是我第一次遇到问题的方式)。
感谢您的帮助!
【问题讨论】:
【参考方案1】:经过一番调查,它看起来像是来自HTTP
包。 close
函数挂起,因为服务器一直在发送消息 (https://github.com/JuliaWeb/HTTP.jl/blob/2a03ca76376162ffc3423ba7f15bd6d966edff9b/src/WebSockets.jl#L237)。
从HTTP
切换到WebSockets
解决了这个问题:
using WebSockets
WebSockets.open("wss://www.bitmex.com/realtime") do ws
data, success = readguarded(ws)
message = String(data)
println(message)
error("This is an error")
end
【讨论】:
以上是关于Julia 在 HTTP WebSocket 块中挂起异常的主要内容,如果未能解决你的问题,请参考以下文章
与 Python+Numba LLVM/JIT 编译的代码相比,Julia 的性能