与Web服务器或网页上的后端作业进行通信

问题描述 投票:0回答:2

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

目前,我进入工作箱以启动工作。 这对我的用户来说还不够友好,因此我将使用一个简单的Web UI来启动脚本。 作业运行时间从10秒到几个小时不等。 Web UI需要反映作业的状态。

过去,我已经通过在服务器上运行守护程序来解决类似的问题,该守护程序监视假脱机目录(或db表)中的新作业请求,生成一个进程,监视该进程,并在db表中提供有关Web UI的信息或状态文件。 然后,Web UI将作业请求放到假脱机目录(db)中,并偶尔检查状态文件(db)。 对于此任务,这可能是多余的。

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

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

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

谢谢。

python linux backend
2个回答
2
投票

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


0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.