2016-05-23 23 views
0

フラスコおよびラウンドフラスコのプロセスは、サブプロセスも終了します。フラスコから離脱したプロセスを起動します

誰かがメインプロセスからどのようにプロセスを切り離すことができますか?だから私はメインプロセスを殺す場合、サブプロセスはアクティブのままですか?

エス:メインフラスコアプリで

iがルートを開くと、例えば/アプリは以下のコードを実行store_changes:

subprocess.Popen("python hdb_store_changes.py --country {0} --id_first_level {1} --threads {2} --qty {3} --username {4}".format(country.upper(),id_first_level,threads,fixedqty,username), shell=True,stdout=subprocess.PIPE) 

このコードは長い時間がかかるであろう別のプログラムを実行します私はフラスコアプリを再起動した場合...このプロセスはまた、死ぬ処理するため、私は...メインプロセスから切り離すための方法を見つける必要がある

おかげ

+1

セロリ。ここでは紹介しています:http://blog.miguelgrinberg.com/post/using-celery-with-flask – wgwz

+1

「フラスコ」が死んでいてもそれを実行し続けたい場合は、誰がその標準出力から読みますか?答えがnobodyならば 'stdout = PIPE'をドロップします。プロセスが実行中にパイプから読み込まない限り、' stdout = PIPE'を使わないでください。そうでなければ、対応するOSパイプバッファがいっぱいになるとハングします。 [出力を隠すには、 'stdout = DEVNULL'を使います(http://stackoverflow.com/q/11269575/4279)。無関係: 'shell = True'を削除し、代わりに引数を引数として渡します。 – jfs

答えて

0

ゾル私が採用したのは、wgwz

で述べられているセロリを使用することですが、J.F. Sebastianの解決法も正しいです。

関連する問題