2

我们需要通过 Web 浏览器让多个用户可以使用 FiftyOne 实例。我们需要启动一个进程并让它运行,即使我们从启动应用程序进程的会话中注销也是如此。

我正在使用以下命令来启动该过程。我在 Docker 容器中执行此操作。该容器通过 AWS EC2 在 Ubuntu 主机上运行。

$ nohup fiftyone app launch --remote > fiftyone.log 2>&1 &

如果我从终端启动此命令,它会启动允许 Web 浏览器与 FiftyOne 应用程序连接的进程。这些在我注销后仍然存在。

但是,这些过程有时会变得不可用。例如,运行 20 多个小时后,FiftyOne 崩溃并在日志文件中显示以下内容~/.fiftyone/var/lib/mongo/log/mongo.log

(制作者cat ~/.fiftyone/var/lib/mongo/log/mongo.log | jq '{msg,t}'

{
  "msg": "CMD fsync",
  "t": {
    "$date": "2021-09-01T15:04:24.152+00:00"
  }
}
{
  "msg": "Received signal",
  "t": {
    "$date": "2021-09-01T15:04:24.181+00:00"
  }
}
{
  "msg": "Signal was sent by kill(2)",
  "t": {
    "$date": "2021-09-01T15:04:24.181+00:00"
  }

我怎样才能获得有关此崩溃原因的更多信息?

4

1 回答 1

2

FiftyOne 的开源版本主要是为个人用户设计的。多用户协作的最佳体验是 FiftyOne Teams。您可以在这里注册:https ://voxel51.com/#teams-form

具体关于此错误

在后端,fiftyone app launch --remote有效调用会运行以下 Python 命令:

session = fo.launch_app(remote=True)
session.wait()

对于远程会话,session.wait()调用将阻塞,直到有东西连接到它,然后将继续阻塞,直到所有连接的选项卡都关闭。

刷新选项卡时内置了一个超时来处理这种情况,以便会话不会立即关闭。在某些情况下,我们注意到刷新时间比超时时间长,并且会话过早关闭。这正在调查中。

下一个版本提供了一个将导致wait无限期阻塞的参数。你就可以打电话了fiftyone app launch --remote --wait 0

同时,我建议编写并调用一个小脚本 ( launch_app.py) 以永久阻塞,直到它退出。

import fiftyone as fo

session = fo.launch_app(remote=True)

# Indefinite blocking
while True:
    pass
python launch_app.py
于 2021-09-02T18:51:45.707 回答