2011-10-21 2 views
1

나는 Redis 저장소에서 URL을 읽으려고 시도하고 간단히 URL의 HTTP 상태를 가져옵니다. EventMachine 내의 모든 것. 내 코드에 어떤 문제가 있는지 알 수는 없지만 예상대로 비동기 적이 아닙니다.EventMachine, Redis & EM HTTP 요청

모든 요청은 첫 번째 요청에서 마지막 요청으로 시작되며 흥미롭게도 마지막 요청 이후에만 첫 번째 응답 (확인하고 싶은 HTTP 헤더) 만받습니다. 아무도 거기에 무슨 일이 일어나는지 힌트를 가지고 있습니까?

나는이 스크립트를 몇 천개의 도메인에 대해 실행 중이므로 마지막 요청을 보내기 전에 첫 번째 응답을받을 것으로 예상됩니다.

+0

키 배열을 각각 반복 처리했기 때문입니까? eventmachine의 방법으로 itereate하는 방법? – ctp

답변

2

EventMachine은 비동기이지만 원자로 자체는 단일 스레드입니다. 따라서 루프가 실행 중이고 수천 개의 요청을 실행하는 동안 루프가 종료 될 때까지 실행되는 요청이 없습니다. 그런 다음 EM.stop을 호출하면 실행하기 전에 원자로가 정지합니다.

EM :: iterator와 같은 것을 사용하면 도메인 처리를 분해하여 반응기를 실행할 수 있습니다. 그런 다음 원자로를 정지하기 전에 파견 요청 카운터와 수신 응답을 보관하여 EM을 중지하려는 경우 마술을해야합니다.

+0

안녕하세요 dj2, 깨끗한 설명에 많은 감사드립니다. EM에 대한 모든 사실을 이해하기 위해 좋은 문서가 누락되었습니다. 많은 새로운 것들을 배울 ;-) – ctp

+0

문제가 해결 되었습니까? – dj2

관련 문제