2009-02-01 3 views
14

으로 사용하면서 web.py를 발견했습니다. 내가 어리석은 문제가 붙어있어 :파이어 폭스에서 기본적인 프로그래밍을 배우면서 web.py를 비 블로킹 http-server

나는 별도의 스레드에있는 큐에서 항목을 처리하는 메인 루프가있는 간단한 콘솔 앱을 작성했다. 내 목표는 web.py를 사용하여 항목을 내 대기열에 추가하고 웹 요청을 통해 대기열의 상태를보고하는 것입니다. i 이 모듈이 모듈로 실행되었지만이를 내 메인 앱에 통합 할 수 없습니다. 내 문제는 내가 내 메인 루프를 차단 app.run()와 http 서버를 시작할 때입니다. 도 thread.start_new_thread로 시작하려고했지만 여전히 블록입니다. 은 내 앱 내의 백그라운드에서 web.py의 통합 http 서버를 쉽게 실행할 수있는 방법입니다. 내가 근본적인 missunderstanding의 피해자, 추론 것 도움을 내 오류를 명확히하려는 시도입니다 가능성이 이벤트에

;.) (나 참아주세요, 내가

+0

질문에 대답해서는 안됩니다. – iny

답변

6

내가 작업 솔루션을 발견 -

+3

이 프로그램을 Ctrl + C로 삭제하는 데 문제가 있습니다. 누구든지 확인할 수 있습니까? – puk

+0

클래스의 초기화 과정에서 스레딩의 초기화를 추가해야 할 수도 있습니다 :'def __init __ (self) : threading.Thread .__ init __ (self)'. – Kyr

1

:-) 초보자에게입니다 반복적으로 호출하는 함수가되도록 메인 루프 코드를 다시 작성한 다음 전달하는 함수에서 호출하면 runsimple ...

당신의 요구 사항을 완벽하게 만족 시키십시오. 그러나 서두르다면 가장 쉽습니다. http://www.tornadoweb.org/

1

하거나 토네이도, webpy 유사한 API를 가지고 파이썬 비 블로킹 웹 서버를 사용합니다. 난 그냥, 백그라운드에서 작동하는 웹 서버를하면서 내가 원하는대로로 갈

MyWebserver().start() 

를 호출하고보다

import web 
import threading 
class MyWebserver(threading.Thread): 

    def run (self): 
     urls = ('/', 'MyWebserver') 
     app = web.application(urls, globals()) 
     app.run() 

    def POST ... 

주요 프로그램에 있으며이 프로그램 : 별도의 모듈에서 나는 내 웹 서버를 만들 수 있습니다.

+0

MWE를 제공 할 수 있습니까? 해당 사이트가 좋지 않습니다. – puk

0

최근에 Beanstalkd을 사용하여 별도의 스레드에서 실행되는 작업을 대기열에 추가했습니다. web.py 핸들러는 파이프에 작업을 드롭하고 완전히 별도의 스크립트가이를 실행합니다. 당신은 이것들을 얼마든지 가질 수 있으며, 고급 대기열 제어 등의 이점을 얻습니다.

관련 문제