Views.pyからAjaxを呼び出したときに、Subprocessが呼び出されない問題が発生しています。
views.pyの中身は以下のような形です。
python
1import subprocess as sp 2import asyncio 3 4loop = asyncio.get_event_loop() 5 6def call_subprocess: 7 cmd = "bash ~/test.sh" 8 print("Before Process") 9 sp.run(cmd,shell=True, stdout=sp.PIPE, stderr=sp.PIPE, text=True) 10 print("after process") 11 12 13def call_sp: 14 loop.run_in_executor(None, call_subprocess) 15 return HttpResponse("") 16 17
シェルスクリプトの中身は以下のようになっています。
bash
1echo "Process Called" >> ~/main.log 2python3 test.py
Ajaxからview.py内の call_spを呼ぶと、数回に一回シェルスクリプトが呼ばれない形になっています。
具体的には、"Before Process"と出力はされるのですが、shファイル内の main.logへの反映されていないような挙動が起きています。このようなときには"after process"も出力されません。
複数ブラウザから同時に呼び出してもうまくいったりもするのですが、単一で呼び出してもこのように呼び出しに失敗することがあります。
call_subprocess内の処理をトライエラーで囲ってエラーログを出力してみようともしたのですが、何もエラーが起きていませんでした。
シェルスクリプト内の処理はものによっては5分程かかる結構重い処理です。
これによってシェルの実行が圧迫されているなどが起こっているためにこのような事象が起こるのでしょうか?
あなたの回答
tips
プレビュー