2

簡単な質問、

Django内のPythonスクリプトを使用して、WebページからLinuxデーモン(モーション)を起動しています。私が以下を使用するとき:

def restartRecord():
    #restart the service
    config_file = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'recorder/config/motion.conf')
    p = subprocess.call(['motion', '-c', config_file])
    return True

デーモンは問題なく起動しますが、django開発サーバー(ポート8000​​)から実行している場合は、ポートも拘束されます。これは通常の動作ですか?-デーモンを起動すると、そのポートが拘束されるのはなぜですか?開発サーバーを停止して再起動することで、これをテストできます。

このサービスを開始するためのより良い方法はありますか?

乾杯、ベン

4

2 に答える 2

0

p = subprocess.call(['motion', '-c', config_file])同期呼び出しです。つまり、「モーション」が終了するまで(またはフォークデーモン化されるまで)ページの読み込みがブロックされます。

Django開発サーバーはシングルスレッドであるため、このリクエストが成功するのを待っている間、他のリクエストを処理しません。

UNIXstart-stop-daemonユーティリティを使用してmotionへの呼び出しをラップすることを検討することをお勧めします。

于 2013-01-07T03:31:12.973 に答える
0

それは主なものであるapacheの下でうまくいくようです。返信ありがとうございます。

于 2013-01-08T22:06:17.470 に答える