でアプリをすばやく構築しています。バックグラウンドで実行されるデーモンを追加したいと考えています。これどうやってやるの?
でアプリをすばやく構築しています。バックグラウンドで実行されるデーモンを追加したいと考えています。これどうやってやるの?
回答:
私が知る限り、デーモンの実行を防止したり支援したりするための特別なことは何もありませんが、Pythonで実行できるオプションが少なくとも2つあります。
注:私はまだこれを試していません:)
デーモンスクリプトを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@ubuntu.com',
#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の動作と同様です。
すべてをアプリのロジックにハードコードします。たとえば、最初の実行時に〜/ .config / autostart / yurapp-launcher.desktopを初期化します。たとえば、GmailNotifyアプリでの方法と同様です。
GmailNotifyアプリとは異なり、python-xdgライブラリを使用してfreedesktop.org標準にアクセスできます。
import xdg
print xdg.BaseDirectory.xdg_config_home
ユーザー管理デーモンに適しているようです。
私が見ることができるものから、デーモンをすばやく追加するためのテンプレートはありません。ただし、デーモンテンプレートを作成することで貢献できます。独自のテンプレートを作成する方法は、この質問への回答で説明されています:新しい迅速なアプリケーションテンプレートを作成する方法
Launchpadのコミュニティテンプレートグループに参加して、他のユーザーがテンプレートを使用できるようにすることもできます。
編集:Unityレンズテンプレートもあります。これはUbuntu Unityでのみ機能するため、プラットフォームに依存します(私に尋ねると、かなり弱点があります)。しかし、最初からD-Busの準備ができているようです。デーモンのようなものですが、おそらく完全ではありません。これを開始点として使用して、プラットフォームに依存しないデーモンを作成できます。おそらく...
申し訳ありませんが、他のユーザーからリンクできる内容以外の詳細はわかりません。これを自分で見て、Qt4をすばやく使用する方法を見つけます。EDIT2:デーモンプラットフォームを独立させる(WindowsやLinuxなどで動作する)QtのD-Busコンポーネントがあることがわかりました。このディスカッションフォーラム(http://www.qtcentre.org/threads/38453-Send-and-receive-a-signal-between-2-Qt-applications)には、使用方法の例(C ++でもまだ)があります。それ。または、QDBusConnectionとQDBusMessageをグーグルできます。
Quicklyドキュメントを見ると、Quicklyはデーモンの作成をネイティブでサポートしていないようです。したがって、Python Daemon Libraryをお勧めします。また、Quicklyアプリケーションから簡単にインターフェイスできる次のPythonチュートリアルも確認してください。
また、このStack Overflowの質問はPythonデーモンに対応しています。
Python 3.3には、デーモンを管理するためのデーモンモジュールがあります。