2012-09-14 5 views
0

시나리오는 RMDB id를 매개 변수로 사용하여 API 요청의 응답을 저장합니다. 모든 영화 정보를 imdv-id tt0000001에서 tt9999999로 가져 가고 싶습니다.Python (Gevent)을 사용하여 내용을 비동기 적으로 가져 오는 방법은 무엇입니까?

이제 gevent를 사용하여 여러 스레드 (gevent.joinall (threads))를 실행합니다. 너무 빠르지는 않습니다. Celery + RabbitMQ 사용과 같은 다른 종류의 문제에 대한 해결책이 있습니까?

답변

0

코드에서 차단 호출을하지 않도록 설정해야합니다. 다른 시스템은 실행되지 않으며 전체 시스템이 느려집니다. 차단 이유에는 이벤트 릿의 원숭이 패치 (예 : C 확장)로 패치되지 않은 타이트한 루프 또는 IO가 포함됩니다.

셀 룰렛은 이벤트 릿 & gevent를 사용하여 지원하며, 이는 수행중인 작업 (웹 요청 IO)에 대해 권장되는 동시성 수 ( ) 일 가능성이 큽니다. Celery는 코드를 더 빠르게 실행할 수는 없지만 작업을 여러 시스템에 쉽게 배포 할 수 있습니다.

병목 현상을 찾아내려면 코드를 프로파일해야합니다. 그것은 많은 것들이 될 수 있습니다. 느린 네트워크, 느린 호스트, 느린 DNS 또는 완전히 다른 것.