私は次のようにラズベリーパイ(庭を制御する)でヘッドレスで実行されている長時間実行されているPythonプロセスを持っています:
from time import sleep
def run_garden():
while 1:
/* do work */
sleep(60)
if __name__ == "__main__":
run_garden()
60秒の睡眠期間は、私の庭で起こっている変化(湿度、気温、ポンプのオン、ファンのオフなど)に十分な時間ですが、これらを手動でオーバーライドしたい場合はどうすればよいですか?
現在、私の/* do work */
ループでは、最初に構成変数を保持している別のサーバーを呼び出し、Webコンソールを介してそれらの構成変数を更新できますが、60秒のループに依存しているため、リアルタイムの感覚が欠けています(たとえば、Webコンソールを更新してから、目的の効果が有効になるまで45秒待つ場合があります)
実行中のraspberryPirun_garden()
は庭専用であり、基本的にリソースを消費するのはそれだけです。だから私は何かをする余地があることを知っています、私はただ何を知らないのです。
ループが構成変数が更新されたという事実を検出すると、ループは60秒待つのではなく、指数バックオフを実行して相互作用をチェックし続けることができますが、それがはるかに優れているとは思えません。
基本的にこの長期実行プロセスに飛び込むためのより良い方法はありますか?