我需要發送數千個POST請求。 我搜索網絡上的信息,並多次嘗試後,我編碼 以下解決方案:用Python發送POST請求的正確方法(urllib2,base64和json)
post_data = urllib.urlencode({'pushes': b64encode(json.dumps(pushes))})
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent,
'Content-type': "application/x-www-form-urlencoded",
'Accept': "text/plain"}
request = urllib2.Request(PUSH_URL, data=post_data, headers=headers)
response = urllib2.urlopen(request).read()
推是字典列表。
大多數情況下,此解決方案都可以正常工作,但有時它會在目標服務器(Apache)上導致分段錯誤。我監視了目標服務器上打開的連接。 連接數量很少(100-200)。 也許我的代碼不是100%正確的。 我需要一個更可靠的解決方案。
在此先感謝。
更新 - 2013年1月25日
我用strace的調試Apache Web服務器(目標服務器)。
我發現Zend Framework使用的syscall'gettimeofday'存在一些問題。
我試圖將zend應用程序移到兩個不同的服務器上, Centos和Ubuntu Server 12.04。
PHP版本也從5.3更改爲5.4。
我總是遇到strace的問題。
我將應用程序移植到另一個框架。問題消失了。
執行POST請求的源服務器上的代碼未被修改。
你見過[請求](http://docs.python-requests.org/en/latest/)嗎? –
@AlexL:還沒有。我會試一試。謝謝。 – pedrotech