2017-11-13 8 views
-1

2分ごとにデータベースをチェックする通知システム(ラズベリーパイと一緒に)を作成しました。新しいエントリが見つかった場合は、電子メールを送信します。私はそれを2つの方法で動作させています。通知、Pythonループ/タイマー、またはcronジョブを送信する方が良いですか?

  1. pythonスクリプトは起動時に永遠に起動します。ループに組み込まれたタイマーがあります。 2分ごとに、DBがチェックされ、電子メールが送信されます。

  2. pythonスクリプトは、DBをチェックして電子メールを送信するように設定されています。 cronジョブは、このスクリプトを2分ごとに実行するように設定されています。

これは良い選択でしょうか?

+1

ちょうどcronを使用してください。 – Elazar

+0

私はサービスとしてスクリプトを実行するのは部分的ですが、エラーを簡単に記録することができます。 – Sebastian

答えて

1

あなたの最初のオプションは、あなたがsleepビジー待ちの戦略 (https://en.wikipedia.org/wiki/Busy_waiting)のようなものを実装して使用している場合でも、 このstragegyがあなたの目のオプション(cronのアプローチ)よりも多くのCPU /メモリを使用し 必要になりますので、実際に何もしていない場合でも、プロセッサーのフットプリント をメモリに保存してください。

一方、cronアプローチでは、あなたのprocessusは役に立つ活動をしている間にのみ表示されます。あなたのマシン上で実行されている多くのプログラムのためのアプローチ のこの種を実装する場合

ちょうど想像し、メモリの 多くは、それはまた、(メモリ/ CPU使用率)の影響を与えることになる 、待っている状態でprocessusによって消費されますOS のスケジューリングアルゴリズムでは、管理するキューのプロセスが増えます。

したがって、私は絶対には、cron /スケジューリングのアプローチをお勧めします。

とにかく、crontabにエントリを追加してもいなくても、あなたのcronデーモンはバックグラウンドで実行されるので、追加しないのはなぜですか?

あなたのビジー状態のプロセスバスが何らかの理由で強制終了された場合、最初のオプションを実行すると手動で再起動する必要があり、監視エントリが2つ失われる可能性があります。

お手伝いします。

関連する問題