서버에서 실행되는 그래픽 Python 응용 프로그램이 있습니다. 일부 사용자는 애플리케이션에 로컬로 액세스하지만 일부 사용자는 -X 옵션이 활성화된 SSH를 통해 액세스합니다.
애플리케이션의 옵션이 활성화되면 특정 웹 슬롯에서 브라우저를 호출합니다.
os.system("firefox '{}'".format(url)
브라우저는 클라이언트 시스템에서 그래픽으로 나타나지만 실제로는 호스트 시스템의 응용 프로그램에 의해 실행되므로 너무 많은 클라이언트가 시스템에 액세스하면 너무 많은 처리 능력을 소비하므로 문제가 발생합니다.
내 생각에는 애플리케이션이 SSH 세션에 의해 실행되고 있음을 감지할 때마다 브라우저 프로세스가 호스트 시스템 대신 클라이언트 시스템에서 생성됩니다.
가능합니까? 양성이면 어떻게 해야 하나요?
답변1
Python 애플리케이션을 호출하는 URL이 아니라 URL을 사용하여 쉘 스크립트를 호출해야 합니다. 쉘 스크립트는 호스트 이름, 로그인 정보, 환경 등을 기반으로 로컬 브라우저를 시작해야 하는지 여부를 결정합니다. 로컬 브라우저가 Firefox를 로컬에서 실행 중인 경우 클라이언트로 다시 SSH를 통해 연결을 시도하고 Firefox 명령을 실행합니다. 이를 위해서는 서버와 클라이언트 사이에 약간의 작업과 일종의 신뢰가 필요합니다. 그렇지 않은 경우 Python 애플리케이션이 할 수 있는 최선의 방법은 원격으로 실행 중인지 감지하고 사용자에게 URL을 로컬 브라우저에 붙여넣으라고 알리는 대화 상자를 표시하는 것입니다.
답변2
간단히 말해서:아니요, 프로그램을 재설계할 수 없다면 가능합니다.
AFAICT, 이 프로그램은 사용자 컴퓨터, 적어도 데스크탑 환경의 Linux 배포판에서 사용하도록 고안되었습니다.
나는 프로그램이 완료하는 데 너무 오래 걸리거나, 많은 리소스를 사용하거나, SSH를 통한 사용을 정당화하기 위해 Windows를 지원하지 않는다고 추측할 수 있습니다. 그럼에도 불구하고 귀하의 사용자 기반이 TMUX를 사용하지 않는 것으로 의심됩니다. 이는 리소스 때문일 수 있습니다.
실제 이유는 알 수 없지만 서버에 리소스를 저장하려는 경우 가장 쉬운 방법은 사용자가 로컬로 또는 가상 머신/WSL2에서만 프로그램을 실행할 수 있도록 하는 것입니다. 물론 당신은 이미 그것을 알고 있었습니다.
이론적 답변:Python 프로그램의 재작성/적응을 구현하거나 요청할 수 있는 경우(큰 경우) 이를 서버-클라이언트 모델로 이동하십시오. 그래픽 인터페이스를 로컬로(프런트엔드) 실행하고 (잠재적으로) 더 빠른 계산을 위해 서버측(백엔드)에 요청합니다. 그동안 모든 것이 웹 앱으로 구현될 수 있으며 Firefox만으로도 충분할 것입니다.