2011-08-17 2 views
0

나는 기존의 프로세스를 느리게하지 않도록 비 블로킹 방식으로 이벤트를 작성하려고합니다.파이썬에서 지연 처리

  • 사용 트위스트의 defer 객체

이 다른 옵션이 있습니까 파이썬 logging 처리기를 만들 : 사용할 수있는 두 가지 옵션이있다처럼 보인다. 누구도이 경험이 있습니까?

배경 : 아마존의 CloudWatch 서비스에 이벤트를 기록 할 예정이며 PUT 요청 지연으로 인해 걱정됩니다. 나는 실제로 PUT을 잃어 버릴 염려가 없으므로, PUT이 응답을 변경하면 (우리는 경고 목적으로 이벤트를 작성하고 있으며, 어쨌든 일주일 후에 제거 될 것입니다.)

+1

'다중 처리'대기열에 추가하고 '대기열'에서 읽는 기능이 있습니다 (비어있는 경우 차단). – agf

+0

무엇? Deferreds와 Handler를 하나의 문제에 대한 해결책으로 비교하는 것은 일관된 것으로 보이지 않습니다. –

+0

Deferreds는 분명히 훨씬 강력하지만 그 힘이 필요하지 않습니다. 응답하기 위해 전체 초를 걸릴 수있는 처리기에 이벤트를 기록하면 그만큼 오래 기다릴 수 없습니다. 그럼에도 불구하고 Deferreds가 가장 쉬운 솔루션입니까? –

답변

1

로깅이 응용 프로그램에 적합하고 그렇게 들리면 트위스트를 사용하는 것보다 간단해야합니다. 메모리의 스레드 안전 큐에 로그하고 별도의 스레드 (또는 여러 개)를 풀어 클라우드로 푸시 할 수 있습니다.

말하자면 왜곡 된 것이 더 빠르고 확장 성이 뛰어날 수 있지만, 특히 모르는 사람은 가파른 학습 곡선입니다.

스레드가 히트 한도에 접근하면 인터페이스를 응용 프로그램으로 변경하지 않고 로깅 처리기를 트위스티드 방식으로 전환 할 수 있으므로 간단한 접근 방식과 기반으로 시작할 수 있습니다.

+0

이 아키텍처에서 twisted가 더 빠르거나 더 확장 가능하다고 생각하지 않습니다. 클라이언트/서버 연결이 하나 뿐이므로 로깅 처리 위에 약간의 오버 헤드가 추가됩니다. – schlamar

1

이것은 gevent (별개의 greenlet에서 PUT을 수행하고 소켓을 패치 한 것)로는 간단합니다.

+0

좀 더 사소한 것 : ['qrequests'] (https://github.com/kennethreitz/grequests) :) – schlamar

관련 문제