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

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

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

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

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

Python

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

Q&A

解決済

1回答

1355閲覧

IIS複数サイト運用下でPython/DjangoのGUIが動作しない(タイムアウトエラーになる)

gud

総合スコア0

Django

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

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

Python

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

0グッド

0クリップ

投稿2021/02/25 11:56

前提・実現したいこと

IIS環境下において複数サイトを運用しております(PHPとPython)
【イメージ】
・DefaultWebSite(ポート:80):PHP系
・〇〇〇サイト(ポート:8000):Python/Django系

【発生している問題】
そして、Python/Djangoで構築したWebシステムで、tkinterおよびwxPythonのGUIが全く動作せず、困っています。

具体的には、ブラウザ上からボタンを押下してダイアログメッセージを表示させるだけのシンプルな機能ですが、ずっと読み込み中のままになり、タイムアウトエラーになってしまいます。

なお、コマンドラインからpyファイルを実行してtkinterを出すと正常表示されるため、「ブラウザ経由だとNG」というところまで特定できています。

こちらを解決したく、どうか皆様のご知見を拝借いただけないでしょうか。

該当のソースコード

View.py

python

1import tkinter 2from tkinter import messagebox 3 4class TestView(generic.ListView): 5 def get(self, request, *args, **kw): 6 root=tkinter.Tk() 7 messagebox.showinfo('確認', 'ほげほげ') 8

試したこと

■ ローカルのデバッグ環境での実施(VisualStudioCode)
→ リスト結果OK

■サーバーのコマンドラインから、python test.pyのように直接実行(ソースはtkinterのmessageboxを出してるだけ)
→ 結果OK。

■ブラウザから上記ソースのTestViewを実行
→ 結果NG(読み込み中のままになり、500タイムアウトエラー)

■サーバー側環境を確認
・python本体とソースが格納されているフォルダそれぞれにiis_iusrsのアクセス権はついている。
・ハンドラマッピングは"C:\xxxxxx\python.exe" %s %s"と 問題なさそう。
("GUI"の部分以外は、すべてPython/Djangoソースは正常に動作しているため)

■他GUIに置き換え
・wxPythonで同等機能を実装。
→ ローカルのデバッグ環境では動くが、やはりIIS環境だとNG。

どうか皆様のご知見を拝借ください!

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

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

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

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

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

CHERRY

2021/02/25 21:45

Web 上で、GUI を使おうとしている理由は何でしょうか?
gud

2021/02/25 23:49

コメントありがとうございます。そもそも論のお話ですね。 目先の理由としては、メッセージボックスやファイル選択画面を、容易に実装したいというのが直接理由です。 JavaScript等の別手段での回避方法はありますが、回り道すぎます(Tkinterを使えば、短いコードで済みますね) なぜ皆が当たり前に実装できるものがこの環境ではナゼできないのか?どうすればできるのか?をそのままにしたくない、というのが大きな理由です。
CHERRY

2021/02/26 01:08 編集

やりたいことは、Webブラウザでアクセスが有った場合に IIS サーバーのホストで GUI を表示させることでしょうか? Webブラウザ側パソコンに表示させることでしょうか? 基本的にプログラムから GUI を表示できるのは、プログラムが動いているホスト上です。 IIS から実行しているプログラムは、Webブラウザのパソコン側ではなく IIS が稼働しているホストでプログラムが実行されます。 仮に GUI がエラー無く表示できたとしても IIS が稼働している Web サーバーに物理的に接続されているモニタに GUI 画面が表示されるだけで、Web ブラウザを使っているパソコン側に表示されるわけではありません。 Webアプリケーションで、JavaScript 等で、ダイアログを表示しているのは、上記の制約があるためです。
gud

2021/02/26 01:27

ご知見ありがとうございます。感謝いたします。 仰る通り、クライアントのWebブラウザに表示させたいということです。 ちなみに、上記では記載していませんでしたが、IISサーバー(プログラムが動いているホスト)からブラウザで/localhost/~で実行させてみましたが、こちらもNGでした。 本来はCHERRYさんが仰る通り、"表示されるはず"なんですかね。。 とはいえ、そもそも論で、DjangoのTkinterやwxPythonがプログラムが動いているホストのみしか動作しない(=クラアイアンPCのブラウザにはtkinter等のGUIは表示されない)というのは初聞でした。。 本当にご知見ありがとうございました。
CHERRY

2021/02/26 01:47

通常、IIS から実行されるプログラムは、IIS のユーザーとして実行されていて、WindowsServerにログインしているユーザー権限とは異なっていると思います。 また、IIS のユーザーは、最低限の権限しかないため、ディスプレイは設定されていなかったと思いますので、IIS のサーバー上で、Webブラウザでアクセスしても GUI は表示されないと思います。
gud

2021/02/26 02:05

なるほど・・・!流石でございます。 "IIS のユーザーは、最低限の権限しかないため" → だからIISサーバー上であってもWebブラウザ経由ではGUIが表示されなかったのですね。 となると、Django+tkinter、みなさんローカルで動かしてるのですね。 大変参考になりました。ありがとうございました。
guest

回答1

0

自己解決

質問という形で、CHERRY様が疑問に対して回答を示してくれました。

大変ありがとうございました!

投稿2021/02/26 02:10

gud

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問