2017-02-08 21 views
2

클라이언트와 서버 간의 통신을 위해 thisthis 링크를 따라 왔습니다. 내 기본 아이디어는 현재 app.py (내 플라스크 응용 프로그램)에서 방출 오전 알림을 팝업하는 것입니다. 그러나, 나는 또한 HTTP 요청을 가지고 있지 않은 별도의 파이썬 스크립트를 가지고있다. 이 스크립트에서도 클라이언트 (브라우저)에 알림을 보내려합니다. 그래서 나는 다른 python 스크립트에서 app.py로 메시지를 보내고 app.py에서 emit을 수행 할 생각을하고 있었다. 이것을 달성하기위한 더 나은 대안이 있습니까?http 요청이없는 python 스크립트에 flask-socketio를 사용하는 방법

답변

2

내가 app.py

이 방출하게 내 다른 파이썬 스크립트에서 app.py하는 메시지를 보내고 일을 생각했다가 플라스크-SocketIO이 어떻게하는지 사실이다.

서버 및 외부 스크립트에 액세스 할 수있는 일반적으로 Redis 또는 RabbitMQ 메시지 대기열을 실행해야합니다. 그런 다음 다음과 같이 서버에, 당신은 당신의 SocketIO 객체를 생성 다음과 같이

socketio = SocketIO(app, message_queue='redis://') 

그리고 스크립트에서

, 당신이 그것을 만들 :

분명히
socketio = SocketIO(message_queue='redis://') 

당신이 무엇을 일치하도록 메시지 큐 URL을 변경할 수 있습니다 사용하고 있습니다.

첫 번째 개체는 완전히 활성화 된 서버로, app 플라스크 인스턴스에 연결합니다. 두 번째는 첨부 할 서버가 제공되지 않았기 때문에 방출 할 수있는 "쓰기 전용"개체입니다.

외부 스크립트에서 내 보내면 스크립트는 메시지 대기열에 메시지를 게시하고 서버에서 가져온 다음 수행합니다.

+0

메시지 큐의 데이터에 어떻게 액세스합니까? – phanny

+0

이 작업을 수행 할 필요가 없습니다. Flask-SocketIO는 대기열에서 쓰기 및 읽기를 처리합니다. – Miguel

+0

그러나 하나의 데이터를 두 번 또는 때때로 네 번 쓰고 있습니다. 그래서 Flask-SocketIO가 데이터를 두 번 (4 번) 쓰거나 읽는 지 또는 메시지 큐가 실제로 두 번 데이터를 가지고 있는지 확인하고 싶습니다. 이것이 메시지 대기열의 데이터에 액세스하려는 이유입니다. 그것을 확인할 수있는 방법이 있습니까? – phanny