0

在你继续之前,我目前在一个非常受限的环境中工作。安装额外的 dll/exe 和其他类似管理员的活动非常困难。我完全意识到这篇文章中描述的一些方法远非最佳实践......

我想启动一个长时间运行的后台进程,该进程使用 Apache 启动/停止。我有一个启用 cgi 的 python 脚本,它将运行复杂“作业”所需的所有参数作为输入。在 cgi 脚本本身中运行此作业是不可行的 - 因为 a)cgi 开始时已经很慢,并且 b) 多个同时请求肯定会造成麻烦。cgi 脚本只会将参数输入到“作业”数据库中。

通常,我会将 MSMQ 之类的东西与 Windows 服务一起设置。我会让一个 Web 服务将一个作业添加到队列中,并且 Windows 服务将以某个标准间隔轮询队列 - 按顺序处理作业......

我怎么能在 Apache 中完成同样的任务?我可以轻松地创建一个 python 脚本作为后台作业处理器。我的问题是:

  1. 我如何启动它,让它运行,并停止 Apache?
  2. 我如何监控这个过程 - 确保与 Apache 保持联系?

欢迎任何提示或见解。

笔记。操作系统是 Windows Server 2008

4

1 回答 1

0

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

  1. 设置执行该后台处理的 Windows 计划任务。将其设置为每天运行一次或您想要的任何时间间隔(这无关紧要,您将在接下来的步骤中看到)

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

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

于 2013-11-13T14:37:12.253 回答