Apache - 在后台运行长时间运行的进程

时间:2013-11-11 21:15:27

标签: python apache background-process

在您继续前进之前,我目前正在一个非常有限的环境中工作。安装额外的dll / exe和其他类似管理员的活动令人沮丧。我完全清楚,本文中描述的一些方法远非最佳实践......

我想开始一个长时间运行的后台进程,用Apache启动/停止。我有一个启用cgi的python脚本,它将运行复杂“作业”所需的所有参数作为输入。在cgi脚本本身中运行这个作业是不可行的 - 因为a)cgi开始的速度很慢,而b)多个同时发出的请求肯定会带来麻烦。 cgi脚本只会将参数输入“作业”数据库。

通常,我会像MSMQ一样设置一些Windows服务。我将有一个Web服务向队列添加一个作业,并且Windows服务将以某个标准间隔轮询队列 - 按顺序处理作业...

我怎样才能在Apache中完成同样的事情?我可以很容易地创建一个python脚本作为后台作业处理器。我的问题是:

  1. 如何启动它,让它继续运行,并停止使用Apache?
  2. 我如何监控流程 - 确保使用Apache保持活力?
  3. 任何提示或见解欢迎。

    请注意。操作系统是Windows Server 2008

1 个答案:

答案 0 :(得分:0)

对于任何想要做类似事情的人来说,这是一个非常糟糕的解决方案。

  1. 设置执行该后台处理的Windows计划任务。将它设置为每天运行一次或您想要的任何间隔(这是无关紧要的,正如您将在后续步骤中看到的那样)

  2. 在“计划任务”的“设置”选项卡中 - 确保选中“允许按需运行任务”选项。此外,在“如果任务已在运行...”文本下,请确保选中“不要启动新实例”选项。

  3. 然后,从cgi脚本 - 可以从命令行(子进程模块)调用计划任务,参见here。使用上面设置的选项 - 如果任务已在运行 - 将忽略任何后续的需求运行。