2011-10-04 4 views
5

CherryPy를 사용하여 REST API를 통해 요청을 수신하고 있습니다. 요청을 처리하는 것 외에도 애플리케이션은 몇 초마다 리소스 관리를 수행해야합니다. 가장 쉬운 방법은 무엇입니까?파이썬 웹 서버 및 주기적 작업

1) 자원에 무거운처럼 별도의 스레드

2) cherrypy.process.plugins.PerpetualTimer (그것을 사용하는 방법을 잘 실행하고 본다?)

3) 기타를 방법?

별도의 스레드가있는 솔루션은 나에게 좋지만, 더 좋은 방법이 있는지 궁금해하고 있었습니까?

CherryPy는 필수 사항이 아닙니다. 프로젝트가 살아 있고 여러 개의 동시 연결을 지원하기 때문에 주로 사용하기로 결정했습니다 (다른 말로 : 대안을 사용할 수 있습니다).

답변

3

PerpetualTimer는 threading._Timer의 반복 버전입니다.

실제로 사용하려는 것은 cherrypy.process.plugins.Monitor입니다.이 방법은 별도의 스레드를 실행하는 것 이상입니다. cherrypy.engine에 플러그인하기 때문에 사용해야합니다. cherrypy.engine은 CherryPy 서버의 시작 및 중지 동작을 제어합니다. 만약 당신이 당신 자신의 쓰래드를 실행한다면, 당신은 CP가 어쨌든 종료 될 때 멈추게하고 싶을 것입니다; Monitor 클래스는 이미이를 수행하는 방법을 알고 있습니다. 최신 버전까지 PerpetualTimer를 사용하여 BackgroundTask 클래스로 대체되었습니다.

my_task_runner = Monitor(cherrypy.engine, my_task, frequency=3) 
my_task_runner.subscribe() 
+0

감사합니다. 귀하의 답변을 편집하여 클래스 패키지 ([cherrypy.process.plugins.Monitor] (http://docs.cherrypy.org/dev/refman/process/plugins/index.html#cherrypy.process.plugins.Monitor)). 또 다른 참고 사항 : 마지막 매개 변수의 이름이 잘못 지정되었으므로 "간격"이어야합니다. 다시 한 번 감사드립니다. – johndodo