2013-07-11 42 views
1

我正在嘗試使用CURL's CURLOPT_MAX_RECV_SPEED_LARGE option與pycurl庫。這是我的測試代碼:如何在pycurl和Python中使用CURLOPT_MAX_RECV_SPEED_LARGE選項?

import sys 
import pycurl 


class Test: 
    def __init__(self): 
     self.contents = '' 

    def body_callback(self, buf): 
     self.contents = self.contents + buf 

print >>sys.stderr, 'Testing', pycurl.version 

t = Test() 
c = pycurl.Curl() 
c.setopt(c.URL, 'http://curl.haxx.se/dev/') 
c.setopt(c.WRITEFUNCTION, t.body_callback) 
c.setopt(c.CURLOPT_MAX_RECV_SPEED_LARGE, 1024) 
c.perform() 
c.close() 

print t.contents 

它產生一個錯誤;似乎沒有爲此選項定義的庫常量。

Traceback (most recent call last): 
    File "/Users/nilayanand/Documents/workspace/photofeed/photofeed-desktop/test/curl.py", line 18, in <module> 
    c.setopt(c.CURLOPT_MAX_RECV_SPEED_LARGE, 1024) 
AttributeError: CURLOPT_MAX_RECV_SPEED_LARGE 

如何在pycurl中使用CURLOPT_MAX_RECV_SPEED_LARGE選項?

回答

2

CURLOPT_MAX_RECV_SPEED_LARGE選項的屬性不包括CURLOPT_前綴,它只是名爲MAX_RECV_SPEED_LARGE。你的代碼的工作,如果你正確使用它是行:他的確從pycurl`或任何不`進口*

c.setopt(c.MAX_RECV_SPEED_LARGE, 1024) 
+0

解決了這個問題。謝謝傑里米。 –

+0

太棒了!我希望你可以通過點擊左邊的綠色複選標記將其標記爲未來觀衆的解決方案。 –

0

我不知道這會工作,但你可以嘗試改變這一行

c.setopt(c.CURLOPT_MAX_RECV_SPEED_LARGE, 1024) 

這一行

c.setopt(CURLOPT_MAX_RECV_SPEED_LARGE, 1024) 
+0

,所以沒有辦法'CURLOPT_MAX_RECV_SPEED_LARGE'將被定義。這必須導致錯誤。 –

+0

不要輸入*或直接使用CURLOPT_MAX_RECV_SPEED_LARGE。 –

+0

以下是他們的使用說明: 傳遞一個curl_off_t作爲參數。如果在傳輸過程中下載速度超過此速度(以每秒字節數計),則傳輸將暫停以保持平均速率小於或等於參數值。默認爲無限速度。 (在7.15.5中添加) http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTMAXRECVSPEEDLARGE –