我的Python守护进程在终端中使用此命令在我的Ubuntu系统的前台运行正常:
python /opt/my-daemon.py foreground
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用"start"命令调用守护进程时,它会失败,为什么?
python /opt/my-daemon.py start
Run Code Online (Sandbox Code Playgroud)
这是我在/etc/rc.local文件中调用命令的方式:
python /opt/my-daemon.py start &
Run Code Online (Sandbox Code Playgroud)
这里的代码:
1.daemon.py
#!/usr/bin/env python
import sys, os, time, atexit
from signal import SIGTERM
class Daemon:
"""
A generic daemon class.
Usage: subclass the Daemon class and override the run() method
"""
def __init__(self, pidfile,
stdin='/dev/null',stdout='/dev/null',stderr='/dev/null'):
self.stdin = stdin
self.stdout = stdout
self.stderr = stderr
self.pidfile = pidfile
def daemonize(self):
"""
Do the UNIX double-fork magic. See Richard Stevens' "Advanced
Programming in the UNIX …Run Code Online (Sandbox Code Playgroud) 我正在寻找在Ubuntu上运行的基于Web的系统的消息/队列解决方案。
该系统基于以下技术构建:
- Javascript(Extjs框架)-前端
- 的PHP
- Python(与加密设备交互的守护程序服务)
- Python pyserial-(串行端口交互)
- 的MySQL
- Linux-Ccustom bash脚本(更新数据库/邮件报告)
该系统具有以下目的:
- 在分布式平台上捕获客户端信息
- 使用硬件设备加密/解密敏感交易
系统故障:
- 用户可以使用Web浏览器访问系统
- 用户捕获客户端信息,然后按“提交”按钮数据被发送到加密设备,系统进入等待状态
- 然后,数据在设备上加密并发送回浏览器
- 加密的数据保存到数据库
- 系统退出等待状态并显示DONE消息
请注意:我已经处理了等待/处理中的消息,所以忽略它。
到目前为止,我所做的是:
- 我创建了一个python守护程序,用于监视数据库视图中是否有任何新请求
- 守护程序服务使用pyserial在设备上执行新请求,并使用“响应”更新请求表。加密内容
- 我在PHP中创建了一个轮询服务,该服务经常检查>请求表中是否存在针对特定请求的“响应”
- 使用适当的等待/完成状态消息创建了Extjs前端
当前设置的问题:
- 并发-我们期望使用数据库作为消息/排队解决方案的任何时候,随时有20个以上的用户提交数据库的加密/解密请求,由于表锁定和仅1个监听请求的监听进程,因此无法扩展
- 守护程序服务-依赖守护程序服务有点冒险,并且数据库开销似乎有点高,每秒轮询一次视图以查找新请求
- 开发-通过仅将请求发送到加密/解密服务而不是执行在db中插入请求,轮询响应以及在守护程序服务中处理请求的整个过程,可以简化我的开发任务。
我的问题:
在这种情况下,理想的消息/查询解决方案是什么?请考虑>我的系统专门在Ubuntu O / S上运行。
我已经做了一些Google服务,遇到了一个叫做“ Stomp”的服务器,但是事实证明它安装起来有些困难,而且缺少一些文档。我也更喜欢那些在设置类似内容方面有经验的个人的建议,而不是一些“如何”指导的建议:)
感谢您的时间