2013-07-31 3 views
5

:플라스크 및 스케일링과 병행

상황에 맞는 지역 프록시는 플라스크에 스케일링에 관한 하나의 제한 요인이 있습니다. 그것들은 문맥에 따라 Flask가 인 스레드, 프로세스 또는 greenlet으로 정의됩니다. 서버 이 스레드 또는 미성년자를 기반으로하지 않는 일종의 동시성을 사용하는 경우 Flask는 더 이상 이러한 글로벌 프록시를 지원할 수 없습니다. 그러나 대다수의 서버는 두 개의 스레드, 그린렛 또는 별도의 프로세스를 사용하여 동시성을 실현합니다. 모두 메서드가 기본 Werkzeug 라이브러리에서 잘 지원됩니다.

내 질문 :이 3 가지 방법 이외에 다른 동시 메커니즘에는 어떤 것이 있습니까?

답변

2

매우 흥미로운 동시성 메커니즘 중 하나는 비동기 모델입니다. 모든 I/O 또는 기타 긴 작업이 비동기 및 콜백 기반 인 전체 쇼를 실행하는 단일 스레드가있는 단일 프로세스가 있습니다. 이 방법은 I/O 바운드 서비스에 대한 확장 성이 우수하므로이 범주의 서버는 C10K 문제를 쉽게 처리합니다.

예를 들어 Tornado 또는 node.js을 참조하십시오.

+0

기본적으로 그린렛으로 덮여 있습니다. – Jahaja

+0

@Jahaja : Greenlet 기반의 웹 서버는 토네이도와 같은 비동기식 (이벤트 기반) 웹 서버가 또 하나 있습니다. 둘 다 더 높은 동시성이라는 비슷한 목표를 달성하지만, 다른 방법을 사용하여 거기에 도달합니다. 특히 Flask는 Greenlet 기반의 웹 서버에서 작동 할 수 있지만 비동기 서버에는 쉽게 적용되지 않습니다. – Miguel

+0

요점은 두 솔루션 모두 하위 계층에서 설명하는 것을 사용한다는 것입니다. Gevent는 libevent/libev와 node.js를 사용하여 libuv를 사용합니다. (만약 gevent 2.0이 릴리즈 되었다면 libuv를 기반으로 할 수 있다는 것을 기억하십시오.) – Jahaja