为什么我的 actix Supervisor 不重试停止的演员?
Why does my actix Supervisor not retry stopped actors?
我已经实现了一个包含 Supervised
特征的 actix actor。然后我尝试使用
以受监督的方式启动演员
let _: Addr<Unsync, _> = Supervisor::start(|_| MyActor::default());
不幸的是,当该 actor 停止时,由于某种原因它不会自动重新启动。
依赖版本
actix = "0.5"
actix的作者Nikolay Kim帮我分析了这个问题。事实证明,将 Supervisor::start()
结果分配给名为 _
的变量会自动丢弃结果,因此主管实际上不会正确启动。
此问题的解决方案是将 _
变量重命名为 _addr
:
let _addr: Addr<Unsync, _> = Supervisor::start(|_| MyActor::default());
重命名后 Supervisor
正确地重新启动停止后的 MyActor
actor。
我已经实现了一个包含 Supervised
特征的 actix actor。然后我尝试使用
let _: Addr<Unsync, _> = Supervisor::start(|_| MyActor::default());
不幸的是,当该 actor 停止时,由于某种原因它不会自动重新启动。
依赖版本
actix = "0.5"
actix的作者Nikolay Kim帮我分析了这个问题。事实证明,将 Supervisor::start()
结果分配给名为 _
的变量会自动丢弃结果,因此主管实际上不会正确启动。
此问题的解决方案是将 _
变量重命名为 _addr
:
let _addr: Addr<Unsync, _> = Supervisor::start(|_| MyActor::default());
重命名后 Supervisor
正确地重新启动停止后的 MyActor
actor。