2011-10-05 9 views
7

저는 웹 페이지의 테스트를 강조하기 위해 파이썬과 Pycurl을 사용하는 초보자입니다. 그러나, pycurl은 터미널에서 반환 된 html을 출력하기 때문에 스트레스 테스트를해야하는 것보다 훨씬 더 오래 걸릴 수 있습니다. 내가 사용하고있는 pycurl 코드 중 하나가 아래와 같습니다. 결과를 인쇄하거나 쓸 필요없이 pycurl을 실행하는 방법이 있습니까? 어떤 도움이 주어질 것입니다.Pycurl은 터미널에 계속 인쇄합니다.

p = pycurl.Curl() 
p.setopt(pycurl.POST, 0) 
p.setopt(pycurl.COOKIE, sessioncookie) 
p.setopt(pycurl.URL, 'http://example.com/logoff.php') 
p.perform() 
p.close() 

답변

19

Pycurl 문서는 끔찍한,하지만 난 당신이 아무것도하지 않는 기능, 예를 들어,에 WRITEFUNCTION을 설정하려는 생각

p.setopt(pycurl.WRITEFUNCTION, lambda x: None) 

또한 "SET가 모든 것을 수행합니다"라고 생각한 레코드를 VMS로 보냈습니다. 가야.

+0

이했다. 감사합니다 : D – jyim89

+0

'Pycurl 문서는 끔찍합니다. '- 그렇습니다. – ddnomad

3

시도해 볼 수 있습니까?

devnull = open('/dev/null', 'w') 
p.setopt(pycurl.WRITEFUNCTION, devnull.write) 

또는 아무것도 수행하지 않는 함수입니다.

1

두 방법 모두 여기에 나열된 행운이 없었습니다. 모두 다음과 같은 오류가 발생할 : 문서에 따르면

pycurl.error: (23, 'Failed writing body (0 != 108)') 

모두 lambda x: Nonedevnull.write 좋은 옵션이 될해야 할 것은 :

http://pycurl.sourceforge.net/doc/callbacks.html#WRITEFUNCTION

The WRITEFUNCTION callback may return the number of bytes written. If this number is not equal to the size of the byte string, this signifies an error and libcurl will abort the request. Returning None is an alternate way of indicating that the callback has consumed all of the string passed to it and, hence, succeeded.

그러나 내 프로젝트에서 내가 해결하기 위해 다음을 수행했다 이 문제 :

c.setopt(pycurl.WRITEFUNCTION, lambda bytes: len(bytes)) 

즉, 보았을 때 작성된 바이트 수를 반환하는 것은 선택 사항이 아닙니다. devnull.write 실제로 쓰여진 바이트 수를 반환하지만, 나는 그것에 대해 조사하지 않았다. 바이트와 ​​문자열의 문제가있을 수 있습니다. 나는이 출력을 숨기려면 파이썬 2

0

적용되지 않습니다 추측하고있어 파이썬 3. 사용하고

참고 0으로 VERBOSE을 변경

p.setopt(pycurl.VERBOSE, 0) 
관련 문제