質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

0回答

950閲覧

DjangoでAjaxを使った時に並列処理を使ったsubprocessが呼び出されない

babbleman

総合スコア107

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2021/10/18 01:45

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分程かかる結構重い処理です。
これによってシェルの実行が圧迫されているなどが起こっているためにこのような事象が起こるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2021/10/19 02:51

> call_subprocess内の処理をトライエラーで囲ってエラーログを出力してみようともしたのですが、何もエラーが起きていませんでした。 とありますが、subprocess.runのcheck引数をTrueにしてみた場合の結果を教えて下さい。 https://docs.python.org/ja/3/library/subprocess.html#subprocess.run
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問