当前位置: 首页 > 知识库问答 >
问题:

如何将 Python 包作为计划的守护程序作业运行?

公子昂
2023-03-14

我已经创建了一个Python包并在PyPI上发布了它,比如说< code>spamandeggs。这个软件包是跨平台的(Windows、GNU/Linux、MacOSX ),目的是定期(比如每5分钟)向用户更新某些信息。可以从命令行通过命令< code>spamtheeggs运行该包。

以下是我面临的问题:

问题01:如何对通过< code>spamtheeggs命令运行的脚本进行daemonize?

问题:根据这个答案,我尝试在脚本中使用schedule。这对于调度来说很好,但执行不是后台化的。终端在整个过程中都很忙
我想知道一种方法来守护Python包。

问题02:如何将命令添加为定时执行的cron作业?

解决方案01:一种方法是编写描述该过程的安装指南(使用crontab-e等编辑crontab)。缺点:没有吸引力。

解决方案02:作为包的作者,我希望能够将此命令添加到用户的crontab中(显然是在得到用户确认后)。

选项:

  1. 编写一个Python脚本来调度另一个脚本(这可能吗?
  2. 使用任务计划程序,它也可以守护。

我想知道哪个选项是合适的(如果有的话),以及如何着手解决这些问题的建议。

到目前为止,我阅读的资源列表:

    < li >如何定期运行python后台进程 < li >计划Python脚本准确地每小时运行一次 < li >如何使用setuptools打包Python守护程序 < li >在Crontab上执行python脚本 < li >使用cron运行python脚本 < li >创建Cron作业- Linux / Python < li >如何让Python脚本作为服务运行?

注意:如果该解决方案适用于所有3个平台,我将不胜感激。< br> P.S:这是我第一次尝试cron和守护进程作业。

共有1个答案

祁辰阳
2023-03-14

python-deamon包可以帮助你,它在2种模式下工作:

>

  • 使用跑步者(我认为正是你想要的):http://www.gavinj.net/2012/06/building-python-daemon-process.html

    或者直接使用daemon.DaemonContext运行(一种更传统的方式)

    python-deamon没有文档,但我找到了一些代码,可以帮助你 http://www.programcreek.com/python/example/10392/daemon.DaemonContext

  •  类似资料:
    • 问题内容: 我试过了 返回: 并尝试: 当我回车期望过程继续运行时,我收到: 如何将sbt作为守护程序运行? 更新: 我认为cd上一个目录: 因此,它作为守护程序启动,但是如果我执行任何操作(如更改dir),它将终止该进程?如何保持进程运行? 问题答案: 看起来像从您的终端请求的输入。如果它确实不需要输入(可能是在后台运行程序),则可以这样运行: 编辑 好的,这是一个难题。简短答案:运行如下: 理

    • 问题内容: 我有一个脚本,该脚本每隔X次运行一次我的PHP脚本: 如何将其作为守护程序启动? 问题答案: 要将其作为完整的守护程序从Shell运行,您需要使用并重定向其输出。您可以将输出重定向到日志文件,也可以将其丢弃。假设您的脚本名为myscript.sh,请使用以下命令: 这会将进程与当前的shell(stdin,stdout和stderr)完全分开。如果要将输出保留在日志文件中,请用/ pa

    • 问题内容: 我需要将php脚本作为守护进程运行(等待说明并执行操作)。cron工作不会为我做这件事,因为需要在指令到达后立即采取措施。我知道由于内存管理问题,PHP并不是守护进程的最佳选择,但是由于种种原因,在这种情况下我必须使用PHP。我遇到了libslack的一个名为Daemon的工具(http://libslack.org/daemon),它似乎可以帮助我管理守护进程,但是最近5年没有任何更

    • 问题内容: 在Ubuntu中将Go程序作为守护程序启动的正确方法是什么?然后,我将使用Monit对其进行监视。我应该做这样的事情吗: 我应该考虑Go特定的事情吗? 问题答案: 您应该为您的程序()构建可执行文件,然后为upstart编写脚本,它将为您的守护程序运行程序,或者使用诸如daemonize之类的外部工具。我更喜欢后一种解决方案,因为它不依赖于系统相关的新贵。通过守护进程,您可以像 这将为

    • 问题内容: 使Perl脚本作为守护程序在Linux中运行的简单方法是什么? 目前,这是在CentOS上。我希望它从系统启动,然后从系统关闭,因此一些集成也不错,但是我总是可以向添加一个自定义行。 问题答案: 最简单的方法是使用Proc :: Daemon。 或者,您可以执行Proc :: Daemon的所有操作: 分叉一个孩子并退出父进程。 成为会话负责人(将程序与控制终端分离)。 分叉另一个子进