신청서를 Gunicorn
뒤 nginx
으로 실행합니다. 내 응용 프로그램의 초기화 모듈에서 나는 web.run_app(app)
을 사용하여 응용 프로그램을 실행하지 않고 단지 Gunicorn
에 의해 가져 오기 될 인스턴스를 만들어 각 작업자에서 실행합니다. Gunicorn
가 만듭니다. 그래서 Gunicorn
은 몇 개의 작업자 프로세스와 이벤트 루프를 생성 한 다음 해당 루프에서 응용 프로그램의 요청 처리기 runs을 만듭니다.aiohttp 신청 프로세스에서 ZeroMQ 듣기
내 aiohttp
응용 프로그램은 내가 Gunicorn
에 의해 시작 응용 프로그램 프로세스의 어떤에서 발생한 이벤트에 통보 할 연결 WebSockets
(모바일 응용 프로그램 클라이언트)의 컬렉션이 있습니다. 그리고 모두WebSockets
에 연락하고 모든 신청 절차에 연락하고 싶습니다. 따라서 어떤 종류의 업스트림 프록시를 만들려면 ZeroMQ
을 사용하고 각 응용 프로그램 프로세스에서 zmq.SUB
소켓을 사용하여 구독하고 싶습니다.
는 ... 그래서 기본적으로 나는 각 응용 프로그램 작업자 이런 일을 달성하고자 :
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect('tcp://localhost:5555')
while True:
event = socket.recv()
for ws in app['websockets']:
ws.send_bytes(event)
# break before app shutdown. How?
어떻게 aiohttp
응용 프로그램 내 ZeroMQ
프록시 WebSockets
에 메시지를 전달을들을 수 있습니다?
이 코드를 이벤트 루프 내에서 백그라운드로 실행하고 응용 프로그램의 수명주기 내에서 aiohttp
이내에 올바르게 실행하고 종료하는 방법은 무엇입니까?
UPDATE
은 이미 문제를 설명하고 해결 방안을 제시 aiohttp의 GitHub의 저장소에 issue을 만들었습니다. 나는 여기서 설명 된 문제에 대해 의견을 높게 평가할 것이다.