2011-10-05 15 views
7

Jestem początkującym użytkownikiem Pythona i Pycurla dla celów testowania stresu na stronie internetowej. Jednak pycurl nadal drukuje zwracany html w terminalu, co sprawia, że ​​testowanie warunków skrajnych zajmuje jeszcze więcej czasu niż powinno. Jeden taki kod pycurl, którego używam, został zamieszczony poniżej. Czy istnieje sposób, aby po prostu uruchomić pycurl bez konieczności drukowania lub zapisu wyników w dowolnym miejscu? Każda pomoc zostanie doceniona.Pycurl kontynuuje drukowanie na terminalu

Odpowiedz

19

Dokumentacja Pycurl jest okropna, ale myślę, że chcesz ustawić WRITEFUNCTION na funkcję, która nic nie robi, np.

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

Ponadto, chciałbym podać do wiadomości, że uważam, że API "ZESTAW robi wszystko" wyszło z VMS. Gaaah.

+0

To działało. Dziękuję: D – jyim89

+0

'Dokumentacja Pycurl jest okropna" - tak prawdziwa – ddnomad

3

Czy można tego spróbować?

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

lub po prostu funkcja, która nie robi nic.

1

Nie miałem szczęścia w obu metodach wymienionych tutaj. Obie prowadzą do następującego błędu:

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

Według dokumentacji zarówno lambda x: None i devnull.write powinny być dobre opcje:

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.

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

w moim projekcie miałem jednak wykonać następujące czynności, aby rozwiązać ten problem:

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

Innymi słowy, nie było opcjonalne zwracanie liczby bajtów zapisanych, gdy patrzyłem. devnull.write faktycznie zwraca liczbę zapisanych bajtów, ale nie patrzyłem na to. Być może jest jakiś problem z bajtami vs łańcuchami.

Zauważ, że używam Python 3. Zgaduję ten nie ma zastosowania w Pythonie 2.

0

Aby ukryć wyjście, zmień VERBOSE 0:

p.setopt(pycurl.VERBOSE, 0)