サーバー上で実行されるグラフィックPythonアプリケーションがあります。一部のユーザーはアプリケーションにローカルにアクセスしますが、一部のユーザーは-Xオプションが有効なSSHを介してアクセスします。
アプリケーションのオプションが有効になると、特定のWebスロットからブラウザを呼び出します。
os.system("firefox '{}'".format(url)
ブラウザはクライアントシステム上でグラフィカルに表示されますが、実際にはホストシステムのアプリケーションによって実行されるため、あまりにも多くのクライアントがシステムにアクセスすると処理量が多すぎるため、問題が発生します。
私の考えでは、アプリケーションがSSHセッションによって実行されていることを検出するたびに、ブラウザプロセスがホストシステムではなくクライアントシステムで作成されます。
可能ですか?良性ならどうしたらいいですか?
答え1
Pythonアプリケーションを呼び出すURLではなく、URLを使用してシェルスクリプトを呼び出す必要があります。シェルスクリプトは、ホスト名、ログイン情報、環境などに基づいてローカルブラウザを起動する必要があるかどうかを決定します。ローカルブラウザがFirefoxをローカルで実行している場合は、クライアントにSSHを介して再度接続し、Firefoxコマンドを実行します。これを行うには、サーバーとクライアントの間にいくつかの作業と一種の信頼が必要です。そうでない場合、Pythonアプリケーションができる最善の方法は、リモートで実行されていることを検出し、ユーザーにURLをローカルブラウザに貼り付けるように指示するダイアログボックスを表示することです。
答え2
簡単に言うと:いいえ、プログラムを再設計できない場合は可能です。
AFAICT、このプログラムは、お使いのコンピュータ、少なくともデスクトップ環境のLinuxディストリビューションで使用するように設計されています。
私はプログラムが完了するのに時間がかかりすぎたり、多くのリソースを使用したり、SSHを介した使用を正当化するためにWindowsをサポートしていないと推測できます。それにもかかわらず、ユーザーベースがTMUXを使用していないと思われます。これはリソースが原因である可能性があります。
実際の理由は不明ですが、サーバーにリソースを保存する場合は、最も簡単な方法は、ユーザーがローカルまたは仮想マシン/ WSL2でのみプログラムを実行できるようにすることです。もちろん、あなたはすでにそれを知っていました。
理論的な答え:Pythonプログラムの再作成/適応を実装または要求できる場合(大きい場合)、それをサーバークライアントモデルに移動します。グラフィックインターフェイスをローカルで(フロントエンド)実行し(潜在的に)、より高速な計算のためにサーバー側(バックエンド)に要求します。その間、すべてがWebアプリとして実装でき、Firefoxだけで十分です。