问题标签 [python-daemon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1531 浏览

python - 在 Python virtualenv 中使用 /etc/environment

我正在开发一个使用 python-daemon 包启动瓶子应用程序的守护程序脚本。脚本是 /etc/init.d/app.sh

在 /etc/environment 中设置了一些环境变量,这些变量将在应用程序的 settings.py 文件 (os.environ) 中使用。

一旦我激活 virtualenv,所有系统环境变量都会被删除(包括我在 /etc/environment 中设置的那些)。

我正在使用的初始化脚本是

此外,当我检查我在 ipython shell 的 /etc/environment 中定义的环境变量时,变量显示正常。只有当我尝试使用 init 脚本启动应用程序时,一切都变为空白。

我正在寻找的是在 virtualenv 中的应用程序中使用 /etc/environment 中定义的变量的正确方法。

0 投票
0 回答
1173 浏览

python - Python - 具有多处理或多线程的守护进程

我有一个Python执行无限循环的脚本(它监视某些文件类型的文件夹)。

找到文件类型后,我需要它来生成一个新进程来处理该文件。我已经开始实现这段代码(发布在这里,但现在我问的是关于同一主题的不同问题 - 不一定是相同的代码 - 因此发布了一个新问题)。

但是,这个无限循环脚本需要在后台运行。在我之前的问题中,我通过在守护进程中运行的无限循环实现了这一点,然后文件处理(一旦找到特定类型的文件)使用mutliprocessing.pool模块生成了一个新进程。但是,我发现守护进程无法启动新的子进程的困难方式。

实现此功能的最佳方法可能是什么???

有没有更好的方法让无限循环在后台运行并且仍然能够启动新进程multiprocessing.pool

0 投票
1 回答
5246 浏览

python - python-daemon 中的信号处理

我安装了python-daemon,现在我正在尝试正确处理信号。我的代码:

当我启动代码时,一切都按预期工作:pythonDaemon 正在运行/var/log/syslog的文本每 5 秒写入一次。但是,当我想终止守护程序时kill -TERM *PID*,守护程序已终止,但系统日志中缺少文本pythonDaemon STOP

我究竟做错了什么?

注意:我不在from daemon import runner这里工作,因为这给了我一个错误(看起来我需要一个旧版本的lockfile),除非它是正确处理信号的唯一可能性,否则我不会解决这个问题。

0 投票
2 回答
2286 浏览

python - python 守护程序的单个实例(使用 python-daemon)

我想创建一个永远运行的程序,一次只运行一个实例,并且可以使用 init.d 脚本启动。python-daemon似乎是一个不错的选择,因为它是PEP 3143的参考实现。

无论如何,我无法理解 PID 锁定文件的用途,因为它不会阻止程序运行两次。

我是否应该手动检查 init.d 脚本中是否存在锁定文件(基于“/etc/init.d/skeleton”)?还有我应该怎么杀死它?获取 PID 文件中的 PID 号并发送 SIGTERM ?

非常感谢。

0 投票
1 回答
162 浏览

networking - 如何使用 twistd 守护自定义反应器 (txnet)

我在应用程序中使用 txnet 来监视某些服务器是否已启动,它具有 Web 界面,因此反应器以及用于 ping 请求的 listenICMP(是 txnet 中提供的反应器)也用于 Web 服务器的 listenTCP。我的问题是关于如何使用twistd 进行守护进程。Twisted.internet.application 根据api提供:

TCPServer, TCPClient, UNIXServer, UNIXClient, SSLServer, SSLClient, UDPServer, UDPClient, UNIXDatagramServer, UNIXDatagramClient, MulticastServer

我猜我必须实现自己的服务,但我可以找到一个很好的例子,最好的在线解释可能是krondo tutorial daemonology ,但它没有关于更改反应器的参考。总结:为了守护这样的东西,最好的选择是什么?:

我知道listenUDP 可能在这里工作,但这是一个简化版本,我真的需要listenICMP。

0 投票
0 回答
5489 浏览

python - 安装 python-daemon 包失败并显示“没有名为资源的模块”

我需要在 Windows 下本地安装一个项目,它使用该python-daemon包作为依赖项。有谁知道如何在Windows下安装它?

当我尝试安装它时,它失败了:

0 投票
1 回答
1949 浏览

python - 没有创建 pid 并且进程没有启动的任何原因?

我正在尝试将此脚本与 python-daemon 一起使用来启动和停止在后台运行一些代码。(最终目标是在 AWS 实例中使用它)。

出于某种让我无法理解的原因,没有生成 pid 文件,并且我认为该进程没有运行。

Python脚本:

在外壳(OSX)我做:

python daemon.py start >>>> 这运行但 pid 文件未创建(也尝试 sudo) python daemon.py stop >>>> 返回错误:

回溯(最后一次调用):文件“SST_daemon.py”,第 68 行,在 daemon_runner.do_action() 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/daemon /runner.py”,第 189 行,在 do_action func(self) 文件中“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/daemon/runner.py”,第 152 行,在 _stop u"PID 文件 %(pidfile_path)r 未锁定" % vars()) daemon.runner.DaemonRunnerStopFailureError: PID 文件 '/Users/josefernandes/Documents/workspace/RandomThings/testdaemon.pid' 未锁定

我已经尝试解决这个问题几个小时,但到目前为止还没有结果。

为什么这不起作用?

非常感谢任何帮助!!!!!!!

0 投票
1 回答
1107 浏览

python - 守护进程可以在 python 中派生子进程吗?

我有一个持续运行的守护进程,它是我使用 runit 包创建的。我希望守护进程监听一个表并根据表的列执行任务,该列说明它需要执行什么任务。

我正在考虑在每次执行新任务时从该守护进程中派生子进程(基于守护进程侦听的表 A 中插入的新行)。

多处理模块说我不能或不应该从守护进程派生子进程,就好像它死了一样,子进程是孤立的。

什么是实现守护进程监听表的好方法,基于列值,分叉子进程(彼此独立),子进程执行任务并返回守护进程并死亡。

如果子进程正在访问共享数据并对其进行修改,我需要使用一些锁定机制。

0 投票
1 回答
874 浏览

python-2.7 - 通过信号停止 python 2.7 守护进程

我在我的脚本中使用 python 2.7.3 和 daemon runner。在运行(循环)方法中,我想睡一段时间,但不是用这样的代码:

我想等待一些同步原语,例如 multiprocessing.Event。有我的代码:

这是我的日志文件记录:

日志中没有“Spyder 服务已停止”打印,我的程序挂在 set() 调用上。在调试时,我看到它在 Event.set() 调用时挂起,set 方法在所有等待实体唤醒时挂在信号量上。没有理由 Event 将是全局对象或 threading.Event。我看到了这个答案,但这对我不利。是否有与 multiprocessing.Event 相同的行为等待超时等待的替代方法?

0 投票
1 回答
605 浏览

linux - 暴发户不会开始我的工作

我很难弄清楚我的脚本有什么问题。我是 linux 世界的新手,所以我可能会遗漏一些非常琐碎的东西。我有一个 python 脚本,我想在 pc 启动时运行一个守护进程。我也想在崩溃的情况下重生它。在谷歌上看了几个小时后,我放弃了:)

这是我到目前为止所尝试的:

当执行 initctl start "svc_name" 我得到initctl: Job failed to start错误。

谢谢