0

我有一个运行 linux 的“设备”(由于缺乏更好的描述)。

目前我 ssh 进入盒子以启动工作。这对我的用户来说不够友好,所以我正在组合一个简单的 Web UI 来启动脚本。一个作业的运行时间从 10 秒到几个小时不等。Web UI 需要反映作业的状态。

过去,我通过在服务器上运行一个守护进程来解决类似的问题,该守护进程监视一个假脱机目录(或数据库表)以获取新的作业请求,生成一个进程,监视进程,并在 db 表中为 Web UI 提供信息或状态文件。然后,Web UI 将作业请求放入假脱机目录 (db) 并偶尔检查状态文件 (db)。对于这项任务来说,这可能是矫枉过正。

对于当前任务,我正在考虑从 cgi 生成作业,并偶尔检查作业在进程或退出时写入的状态文件。

我的问题:有没有更好的(更简单/写起来更快/更健壮)的方法来做到这一点?是否有我应该了解的现有模式或工具?

(Python 解决方案是理想的。)

谢谢。

4

2 回答 2

2

我在许多项目中都这样做。一个 web 应用程序(主要是 Python/CGI),它生成一个单独的 python 脚本(使用子进程),它会立即守护自己来完成工作。然后,Web 应用程序继续发出 AJAX 请求以检查守护进程进程(我使用简单的 txt 文件进行通信,数据库可能会更好)。一个不错的方法是让守护程序在完成后向最终用户发送电子邮件(带有检索结果的链接)。这样,用户可以在那些需要数小时的工作上关闭他们的网络浏览器。

于 2009-10-01T16:07:06.110 回答
0

我不确定我是否正确理解了您的问题,但我假设您有多个可以同时运行的“作业”并希望它们在网页上显示它们是否完整?

启动作业时,网页(例如 python 和 mod_wsgi)会启动一个 python 脚本,该脚本会将作业输入到 sqlite 数据库并运行作业,一旦作业完成,脚本会更新作业的条目,以便它被标记为完成

状态页面只会显示来自 sqlite 的内容。

除了作业 ID 和可能的开始/结束时间之外,您想要放入数据库的内容取决于您想要在作业状态网页上显示的内容

在旁注中-如果“工作”是汇编,请见哈德森

于 2009-10-01T16:00:52.097 回答