2014-09-27 3 views
0

내 Windows 응용 프로그램에서 스크립트를 호출해야하지만 응답을 기다릴 필요가 없습니다. url의 Query String에 게시 된 데이터. 속도에 대한 응답을 기다리고 싶지 않아 그냥 보내는 서버에서 아무것도 얻고있다.호출 스크립트 응답을 기다리지 않음

아래 코드는 서버에서 스크립트를 호출하고 응답을 기다리지 않습니까? 또는 opener.open() (HTTP 요청 보내기 및 응답 대기 중) 차단 중입니까?

proxy    = urllib2.ProxyHandler() 
opener    = urllib2.build_opener(proxy) 
in_     = opener.open("www.mysite.com/a.py?data=somedata) 

참고 : 보내는 데이터는 쿼리 문자열을 통해 전송됩니다. 따라서 HTTP 요청은 GET afaik 여야합니다. 어쩌면 나는 POST 데이터를해야합니까? Request.add_data() 사용. 그것은 내가 응답을 기다릴 필요가 없다는 뜻인가요? 프록시를 사용중인 사용자에게 ProxyHandler을 사용하고 있습니다. 프록시 뒤에있는 경우 POST이 계속 작동합니까? 은 HTTPHandler 만 작동 함을 나타냅니다.

+0

대기를 원하지 않으면 대신 스레드를 사용하십시오. https://docs.python.org/2/library/threading.html –

+0

마지막 행 마지막에 견적이 누락되었다는 사실을 알려주는 것입니다. 난 당신을 위해 그것을 고칠 거라고하지만 1 char 편집을 할 수 없다 – nettux443

+0

그렇지 않으면 수신 서버가 받아 들였고 요청을 처리했는지 "알지 못하기"때문에 제안 된대로 스레드를 수행하려고합니다. 내 제안은 스레드 것입니다 그리고 만약 당신이 정말 리소스를 줄이려고하면 당신이 적어도 200 상태 (OK) 성공 여부를 알 수 있도록 데이터를받을 시작합니다 종료합니다. –

답변

0

HTTP 요청을 포함하는 함수를 정의하고이를 백그라운드에서 실행할 스레드로 호출 할 수 있습니다.

args를 args 변수에 전달할 수 있습니다.

from threading import Thread 

def makeReq(): 
    proxy    = urllib2.ProxyHandler() 
    opener    = urllib2.build_opener(proxy) 
    in_     = opener.open("www.mysite.com/a.py?data=somedata") 

thread = Thread(target = makeReq, args=()) 
thread.start() 
관련 문제