2012-03-09 1 views
1

웹 채팅에 IOLoop.add_callback과 IOLoop.add_timeout 사이에 혼란스러운 토네이도를 사용하고 있습니다.토네이도에서 IOLoop.add_callback 대 IOLoop.add_timeout?

IOLoop.add_timeout은 특정 간격이 있으며 IOLoop.add_callback은 어떻습니까? 토네이도가 고정 된 간격을 가지고 있습니까? 또는 IOLoop.add_callback은 간격이 없으며 IO 이벤트를 기반으로합니까?

토네이도 문서에서 자세한 정보를 찾을 수 없습니다.
IOLoop's source code 및 설명서에서 http://www.tornadoweb.org/documentation/ioloop.html

답변

4

는 add_callback 단순히 콜백 함수가리스트에 추가하여, 나중에 실행되도록 등록한다. 그런 다음, 다음 IOLoop 반복에서 모든 콜백을 호출합니다 (FIFO 순서로). Add_callback은 I/O 이벤트와 같은 사용 가능한 것이있을 때 호출되어야합니다. 자세한 내용은 article을 확인하십시오.

+0

필자는 긴 폴 핸들러 함수 (데코레이터 @ tornado.web.asynchronous가있는 함수)의 끝에 add_timeout을 넣었지만 제대로 작동하지만 실제 리얼 타임 핸들러는 아닙니다. 나는 add_callback에 의해 add_timeout을 대체하고, 시스템은 멈춘다! – jondinham

+2

어딘가에서 긴 폴링을하고 있다면이 예제에서 설명하는 것처럼 이벤트를 "catch"하기 위해 add_timeout을 몇 번 호출해야합니다. http://hymloth.posterous.com/bringing-celery-and-tornado-together – hymloth