【问题标题】:Starting a long running process on a server from a WSGI application从 WSGI 应用程序在服务器上启动一个长时间运行的进程
【发布时间】:2011-02-07 22:52:10
【问题描述】:

我需要通过 http 启动一个长时间运行的进程(30 分钟)并在运行时获取状态。 “进程”基本上是一个更新数据库的 Python 脚本。我有以下限制:

  1. 一次只能运行一个进程实例。

  2. WSGI 应用程序在多个解释器中运行,所以我不能只创建一个全局变量 isRunning 来跟踪它。

  3. 我需要一个网页来跟踪流程(状态/进度)

  4. 没有 Django,只有纯 WSGI。

谁有做同样事情的经历?

【问题讨论】:

  • 你能解释一下#1 和#2 是如何不相互矛盾的吗?
  • “进程”或作业完全独立于 WSGI 应用程序。 WSGI 应用程序在 4 个进程/解释器中运行,使用 modwsgi 和 WSGIDaemonProcess processes=4 以提高健壮性/速度。

标签: python wsgi


【解决方案1】:

将进程隔离为一个单独的守护进程,并使用 MQ 或其他一些 IPC 来处理它的工作。让它随着进程更新数据库中的值,并在网页中读取该值。

【讨论】:

  • 该过程会输出一个日志,我可以将其保存到文件中并从网页中读取。我如何使用 python 脚本作为守护进程?
【解决方案2】:

查看使用 Celery (http://celeryproject.org/) 并在 Python Web 应用程序进程之外运行任务。

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 2011-02-27
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多