我正在构建一个应用程序迅速地,我想添加一个将在后台运行的守护进程。该怎么做?
答案1
据我所知,没有什么具体的快速阻止或帮助您运行守护进程,但我知道/猜测至少有两个选项你可以用 python 来做:
选项 1:Distutils
注意:我还没有尝试过这个:)
将您的守护进程脚本放入
bin
您的快速项目目录中,例如:bin/yourapp-launcher
在文件中添加以下内容
data/yourapp-launcher.desktop
:[Desktop Entry] Name=Your App Exec=/bin/sh -c 'yourapp-launcher' Type=Application X-GNOME-Autostart-Delay=30 Icon=yourapp Comment= NoDisplay=true
在 DistUtilsExtra 部分编辑
setup.py
并指定其他内容,例如:data_files
DistUtilsExtra.auto.setup( name='hello-ubuntu', version='0.1', #license='GPL-3', #author='Your Name', #author_email='[email protected]', #description='UI for managing â¦', #long_description='Here a longer description', #url='https://launchpad.net/hello-ubuntu', cmdclass={'install': InstallAndUpdateDataDirectory}, data_files=[('/etc/xdg/autostart', ['data/yourapp-launcher.desktop'])] )
当守护进程必须为所有用户运行时,这似乎是一种方法,例如类似于 U1 的工作方式。
选项 #2:硬编码
将所有内容硬编码到您的应用程序逻辑中,例如在第一次运行时初始化 ~/.config/autostart/yurapp-launcher.desktop,例如类似于GmailNotify 应用程序可以。
与 GmailNotify 应用程序不同,您可以依赖python-xdg访问 freedesktop.org 标准的库:
import xdg
print xdg.BaseDirectory.xdg_config_home
对于用户管理的守护进程来说似乎不错。
答案2
据我所知,没有模板可以快速添加守护进程。但是,您可以通过创建守护进程模板来做出贡献。如何创建自己的模板在以下问题的答案中进行了说明:如何快速创建新的应用程序模板
您还可以加入社区模板组在 Launchpad 上,让其他人可以使用您的模板。
编辑:还有Unity 镜头模板。它只能与 Ubuntu Unity 配合使用,因此您将依赖于平台(如果您问我,这是一个相当大的弱点)。但它似乎从一开始就准备好了 D-Bus。有点像守护进程,但可能不完全是。您可以使用它作为起点来创建独立于平台的守护进程,也许……
除了我可以从其他人那里链接的信息之外,我不知道任何其他细节,抱歉。我自己只是看看这个,以了解如何快速使用 Qt4。EDIT2:刚刚发现 Qt 有一个 D-Bus 组件,这将使您的守护进程独立于平台(在 Windows 和 Linux 等上运行)。这个讨论论坛 (http://www.qtcentre.org/threads/38453-Send-and-receive-a-signal-between-2-Qt-applications) 有一个如何使用它的示例(使用 C++,但仍然如此)。或者您可以谷歌搜索 QDBusConnection 和 QDBusMessage。
答案3
查看 Quickly 文档,似乎 Quickly 本身不支持创建守护进程。因此我建议Python 守护进程库。另外,请查看以下可以通过 Quickly 应用程序轻松交互的 Python 教程:
还,这个 Stack Overflow 问题解决 Python 守护进程的问题。
答案4
Python 3.3将会有一个daemon模块用于守护进程的管理。