Pythonプログラムが、起動された時、
どのように起動されたのかを
プログラム内で調べることは可能でしょうか?
知りたいのは、以下の判別方法です。
- Pythonプログラムはブラウザから起動された
- Pythonプログラムはコマンドラインから起動された
(ここから追記)
現在開発は「Visual Studio Code Insider」を使って、リモートデバッグしながら開発しています。
プログラムは、テンプレートエンジンを使って、データベースから取得した値などを
表示する簡単なものです。
このプログラム内に、デバッガが起動されたプログラムにアタッチする為に、
「ptvsd」に関するコードが入っています。
Python
1import ptvsd 2ptvsd.enable_attach() 3ptvsd.wait_for_attach() # デバッガの接続を待つ。 4
「ptvsd.wait_for_attach」の部分で、起動したプログラムが停止し、
Visual Code Insiderのデバッガーをプログラムにアタッチする為のコードです。
ブラウザから起動した時もこのコードが入ったままだと同様に止まってしまい、
「500 Internal Server Error」になる為、起動した状況が判別できれば、
「ptvsd」に関するコード部分を通らないように出来ないかなと思った次第です。
毎回コメントアウトすればいいんでしょうけど、面倒なもので…。
最終形として作りたいプログラムは、ブラウザアクセスのみ行うものになります。
サーバー --- XSERVER X10プラン
OS --------- Linux
Python ----- 3.7.4
よろしくお願い申し上げます。
ブラウザから起動できますか?
Zuishinさん、コメントありがとうございます。
ブラウザからプログラムの起動はできました。
どうするんでしょう?
例えば、実装も修正が必要ですが、__name__を利用して、どちらかを確認するようなことはできなくはなさそうですが。
もう少し細かくシチュエーションがわからないと、なんとも言えないです
全く同じプログラムを「ブラウザから起動」と「コマンドラインから起動」に共用することも考えづらいですが、どのようなシチュエーションなのでしょうか。
(ここは追記・修正依頼の欄なので質問文の編集で対応していただきたいのですが)
ブラウザからの起動、とコマンドラインからの起動、それぞれについて「具体的に何をやっているのか」を、まったく背景や状況がわかっていない人でも理解できるように、数百文字くらいで記述してみてください。状況がわかればなんらかの回答はつけられると思います。
Zuishinさん
>どうするんでしょう?
ブラウザから公開エリアに置いてある.pyファイルのURLをブラウザで叩いたら、動きます。
普通は動かないもんなんですか???
HelloWorldとか、ブラウザから確認しますよね…???
CGI ということですか?
それとも、Paiza や Wandbox または Ideone などのようなものですか?
編集内容から CGI と推察しますが、CGI 部分と ptvsd を使用する部分を別ファイルに分離し、後者から前者をインポートすればいいような気がします。試す環境が無いので、本当にこれでいいかどうかはわかりませんが、注目されているようなのでそのうち回答がつくでしょう。
最終形として作りたいプログラムも、コンソールとブラウザアクセスの両方から動かす必要があるのでしょうか。
回答1件
あなたの回答
tips
プレビュー