問題タブ [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.
python - Python デーモンを作成するための事実上のライブラリは何ですか?
何も忘れずにデーモンを作成する最も安全な方法であると思われるpython-daemonライブラリを使用しようとしています。ドキュメントは非常に貧弱で、PEP 3143だけです。
一方で、Sander Marechal のA simple unix/linux daemon in Pythonへのリンクがたくさん見つかりました。これはより良い解決策のように見えますが、まだ使用しようとはしていません。
編集:Sander Marechalのソリューションを使用しましたが、うまく機能しているようです。
では、Python コミュニティでデーモンを作成するための事実上の方法は何ですか?それはこれらのライブラリの 1 つですか、それとも単に自分ですべてを行っているのでしょうか (2 回フォークするなど)?
また、PEP を備えたライブラリは、他のどのソリューションよりもデーモンを作成する包括的な方法 (または少なくともより標準的な方法) に近いため、はるかに優れた選択であると考えるでしょう。python-daemon
では、このパッケージとの取引は何ですか?標準ライブラリに含まれることはありますか?
python - Pythonプログラムをバックグラウンドでリモートで起動する
fabfileを使用して、リモートボックスでプログラムをリモートで起動し、結果を取得する必要があります。プログラムの終了には時間がかかるので、バックグラウンドで実行したいので、待つ必要はありません。そこで、os.fork()を試して動作させました。問題は、リモートボックスにSSHで接続し、そこでos.fork()を使用してプログラムを実行すると、プログラムはバックグラウンドで正常に動作することですが、fabfileのrunを使用しようとすると、sudoを使用してプログラムをリモートで起動します。 fork()は機能せず、プログラムはただ静かに終了します。そこで、プログラムをデーモン化するためにPythonデーモンに切り替えました。長い間、それは完璧に機能しました。しかし、Pythonシェルフの辞書を読み取るようにプログラムを作成し始めたとき、python-daemonは機能しなくなりました。python-daemonを使用している場合、シェルフdictを正しくロードできないようですが、その理由はわかりません。
python - Pythonデーモンプロセスが停止する理由を見つける方法は?
python-daemonライブラリを使用して python にデーモンを実装しました。
ただし、デーモンは定期的に死ぬ (または強制終了される) ように見えますが、その周期は 1 日から数か月までさまざまです。
例外をキャッチしてファイルに記録し、メールで送信することで、デーモンが停止した理由を見つけようとしました。私のスクリプトのデーモン部分は、おおよそ次のようになります。
かなりの数の例外がログに記録されてメールで送られてきたため、コードが一般的に機能することはわかっています。
ほとんどの場合、何も得られず、ウォッチドッグ スクリプトによって、デーモンが実行されていないことが警告されます。デーモンが死んでいるか殺されている理由を見つけたり追跡したりできる方法はありますか?
python - pika の connection.ioloop.start() をデーモンで実行できますか?
rabbitmq からのメッセージを処理するためのワーカー デーモンをセットアップしようとしています。私はピカとそのSelectConnectionを使用しています。デーモンとして実行しない場合、コードは正常に動作します。使うことができます
と
成功しました。ただし、追加すると
コードは例外を発生させませんが、キューからのメッセージのフェッチを停止し、CPU 使用率を最大にします。worker.py はこの例とまったく同じです。
ありがとう。
python - デーモンのように Django 内でコードを常に実行することはできますか
mod_wsgi を使用して、Apache 経由で django サイトを提供しています。バックグラウンド プロセス (dameon?) として実行される Python コードもいくつかあります。サーバーをポーリングし続け、Django モデルの 1 つにデータを挿入します。これは正常に動作しますが、このコードを Django アプリケーションの一部にして、バックグラウンドで常に実行できるようにすることはできますか? それ自体がプロセスである必要はありませんが、常にアクティブな Django サイトのアートです。もしそうなら、これを達成するのに役立つ例やドキュメントを教えていただけますか?
ありがとう。
python - Windows の python-daemon の代替
python-daemon に依存する python ライブラリ (python_openid) を使用しようとしています。後者は Windows では動作しないようです。
どのような代替手段がありますか (Linux のインストール以外)?
python - Pythonを使用して、プロセスをデーモン化する
さて、私はpython-daemonと、他のさまざまなデーモン関連のコードレシピを見てきました。Pythonベースのデーモン化されたプロセスの使用を開始するのに役立つ「helloworld」チュートリアルはありますか?
python - pythoncrontabの代替-APScheduler&python-daemon
python-daemon 1.6を使用 してAPSchedulerを使用して、タスクのリストを管理するのに問題があります。
(スケジューラーは、特定の選択された時間(秒の解像度)で定期的にそれらを実行する必要があります)
動作中(Ctrl + Cを押すまで)、
サンプル出力:
INFO:apscheduler.threadpool:0コアスレッドと20最大スレッドでスレッドプールを開始しましたINFO:apscheduler.scheduler:Schedulerが開始しましたDEBUG:apscheduler.scheduler:実行するジョブを探していますDEBUG:apscheduler.scheduler:ジョブなし。ジョブが追加されるまで待機INFO:apscheduler.scheduler:ジョブストア"default"にジョブ"job_function(trigger:interval [0:00:30]、next run at:2011-10-06 18:30:39)"を追加しましたINFO:apscheduler.scheduler:ジョブ "job_function(trigger:interval [0:00:30]、next run at:2011-10-06 18:30:33)"をジョブストア "default"に追加しましたDEBUG:apscheduler.scheduler:実行するジョブを探していますDEBUG:apscheduler.scheduler:次のウェイクアップの期限は2011-10-06 18:30:33(10.441128秒)
python-daemonでは、 出力は空白です。DaemonContextがプロセスを正しく生成しないのはなぜですか?
編集-作業中
python-daemon sourceを読んだ後、DaemonContextにstdoutとstderrを追加し、最終的に何が起こっているのかを知ることができました。
python - Python デーモン プロセスのメモリ管理
現在、ログ ファイルをリアルタイムで監視し、その結果に基づいて Postgresql データベースのエントリを更新する Python デーモン プロセスを作成しています。プロセスは、ログ ファイルに表示される一意のキーと、そのキーから見た最新の値のみを考慮します。
私はポーリング アプローチを使用しており、10 秒ごとに新しいバッチを処理しています。データベースへの余分な更新を避けるためにデータの全体的なセットを減らすために、キーと最新の値のみを dict に保存しています。過去 10 秒間のアクティビティの量に応じて、この dict は 10 ~ 1000 の一意のエントリの範囲で変化する可能性があります。次に、辞書が「処理」され、それらの結果がデータベースに送信されます。
私の主な関心事は、メモリ管理と経時的 (数日、数週間など) の口述を中心に展開しています。これは常に実行されているデーモン プロセスであるため、dict のサイズに基づいてメモリ使用量が膨張しますが、適切に縮小されることはありません。バッチを処理した後、標準の逆参照と dict.clear() メソッドを使用して dict をリセットしようとしましたが、メモリ使用量に変化はありませんでした (FreeBSD/top)。gc.collect() を強制するとメモリが回復するようですが、通常は約 50% しか回復しません。
私がどのように進めるべきかについて何かアドバイスはありますか?私のプロセスで他にできることはありますか?この問題について別の道を見つけたら、遠慮なく声をかけてください:)
python - 古いPIDファイルが存在する場合、python-daemonコンテキストの開始に失敗します
私はpython-daemonを使用していますがkill -9
、プロセス時にpidfileが残り(ok)、次にプログラムを実行したときに、手動でpidfileを削除しない限り機能しないという問題があります(わかった)。
終了する前に呼び出されるすべての例外を順番にキャッチします。context.close()
これが発生すると(たとえば、kill
)/ var / run / mydaemon.pid *ファイルが削除され、後続のデーモンの実行が成功します。ただし、SIGKILL(kill -9
)を使用する場合、を呼び出す機会がなくcontext.close()
、/ var/runファイルが残ります。この場合、次にプログラムを実行すると、プログラムは正常に起動しません。元のプロセスは戻りますが、デーモン化されたプロセスはでブロックされcontext.open()
ます。
python-daemonは、プロセスのpidfileが存在しないことに気づき、それをクリアする必要があるようですが、それは発生していません。私はこれを手作業で行うことになっていますか?
with
注:このコードはPython 2.4で実行されるため、使用していません