【问题标题】:Windows: Python Daemon Won't Run on IIS but Runs LocallyWindows:Python 守护程序不会在 IIS 上运行,而是在本地运行
【发布时间】:2019-02-12 16:01:51
【问题描述】:

我有一个托管在 IIS 上的 Django Web 应用程序。我的子进程应该始终与 Web 应用程序一起运行。当我在本地运行应用程序时使用

 python manage.py runserver 

后台任务在应用程序运行时完美运行。但是,托管在 IIS 上的后台任务似乎没有运行。即使托管在 IIS 上,如何让任务运行?

在 Django 的 manage.py 文件中,我有以下代码:

def run_background():
     return subprocess.Popen(["python", "background.py"], creationflag=subprocess.CREATE_NEW_PROCESS_GROUP)
run_background()
execute_from_command_line(sys.argv)

如何使后台任务即使在 IIS 上也始终运行?

【问题讨论】:

  • 不要这样做。使用适当的后台任务管理器。
  • 你能推荐一些吗?
  • 尝试将“background.py”更改为完整路径“C:/something/something/background.py”

标签: python django iis daemon


【解决方案1】:

Celery 是后台任务管理器的经典​​选择。

https://pypi.org/project/celery/

或者,当我想要更轻量级的东西时,我使用了一个名为 schedule 的库。请注意,时间表仍处于起步阶段。如果您需要一些可以保持支持的东西,请选择芹菜以确保安全。

https://pypi.org/project/schedule/

在不了解您的项目背景的情况下,我不能说我会选择哪个,但它们都是任务管理的好选择。

【讨论】:

  • 这可以在后台使用 IIS 持续运行吗?
【解决方案2】:

在 Windows 上,您可以使用任务计划程序在 Windows 启动时使用任意用户帐户自动启动后台进程。 直到几年前,这还是 Windows 上 Celery 3 的“官方建议”解决方案,我相信它可以很容易地适应运行任何进程。 你可以在这里找到详细的解释:

https://www.calazan.com/windows-tip-run-applications-in-the-background-using-task-scheduler/

【讨论】:

    猜你喜欢
    • 2011-03-27
    • 2021-08-31
    • 2022-08-22
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2013-11-17
    相关资源
    最近更新 更多