2014-04-12 2 views
0

Hej, 저는 파이썬에서 winamp와 같은 작은 음악 플레이어를 작성했습니다. 그것은 GUI (Songname, 재생/일시 중지, 다음, 이전, 시간 진행률 표시 줄), 나는 폴더를 열 수 있으며 오디오 파일이 차례로 재생됩니다.django로 제어 파이썬 프로그램

이제 동일한 컴퓨터에서 호스팅되는 웹 서버를 통해 원격 제어 기능을 추가하고 싶습니다. 제 아이디어는 웹 페이지의 GUI에서와 같이 동일한 버튼과 출력 (시간 진행 막대)을 갖는 것입니다.

시나리오 : 내 컴퓨터에서 음악 플레이어를 시작하고 (자동으로 웹 서버를 시작합니다.) 노래가있는 폴더를 선택하고 바탕 화면의 GUI를 클릭하여 두 곡을 건너 뜁니다. 이제 나는 소파에 앉아 책을 읽기로 결정했습니다. 잠시 후 음악이 나를 귀찮게하며 일시 중지하고 싶습니다. 나는 나의 전화를 움켜 잡고, 웹 페이지를 방문하고 일시 정지 버튼을 누른다. 음악이 멈추고 데스크탑 GUI가 반응합니다 (시간 진행 막대가 중지되고 일시 중지 단추 대신 재생 단추가 표시됨).

장고 서버를 만들고 실행하는 방법을 알고 있지만 장고 뷰가 내 데스크탑에서 내 뮤직 플레이어와 통신하는 방법을 알지 못합니다.

내가 봤와 몇 가지 물건을 읽을 수는 있지만 내가 갈 수있는 방법은 아무 생각이 없었다 :

  • 신호 :이
  • 를 통해 통신 두 프로세스가 완전히 분리되어 있기 때문에 어떤 의미가 있는지 알고하지 않습니다 데이터베이스, 뮤직 플레이어의 상태를 데이터베이스 행에 저장하고 버튼을 누를 때마다 두 프로세스가 항목을 업데이트하도록합니다. 두 프로세스가 인터프리터없이 통용하기를 원하므로이 아이디어가 마음에 들지 않습니다.
  • 어쩌면 사용 UDP/TCP :하지만 그 프로세스가 같은 시스템에 있습니다.

지금 당장 프로그램을 작성해야한다면 데이터베이스 접근 방식을 선택하겠습니까? 아니면 아직 발견하지 못한 해결책이 있습니까? 장고 대신 플라스크를 사용해야합니까?

이것이 일반적인 질문 및 작업 인 경우 반복해서 죄송합니다. 문제 해결 방법을 찾을 수 없습니다.

답변

1

당신이 찾고있는 것은 IPC (inter process communication)입니다. 필자의 본능은 뮤직 플레이어가 소켓을 열어 포트에 바인딩하고 명령을 청취하는 것입니다.

다음 Django보기에서 플레이어에 소켓 연결을 열고 명령을 보내고 브라우저에 응답을 반환합니다.

브라우저와의 완전한 양방향 통신을 원한다면 음악 플레이어의 출력을 기다리고 웹 소켓 연결을 통해 브라우저로 다시 보내는 프로세스가 필요합니다. standard socket tutorial is very handy.