何千ものPOSTリクエストを送信する必要があります。Webで情報を検索し、何度も試した後、次のソリューションをコーディングしました。
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()
pushesは辞書のリストです。
ほとんどの場合、このソリューションは正常に機能しますが、宛先サーバー(Apache)でセグメンテーション違反が発生する場合があります。宛先サーバーで開いている接続を監視しました。接続数が少ない(100〜200)。おそらく私のコードは100%正しくありません。より信頼性の高いソリューションが必要です。
前もって感謝します。
更新-2013年1月25日
私はstraceを使用してApacheWebサーバー(宛先サーバー)をデバッグしました。
ZendFrameworkで使用されているシステムコール「gettimeofday」に問題があることがわかりました。
zendアプリケーションをCentosとUbuntuServer12.04の2つの異なるサーバーに移動しようとしました。
PHPのバージョンも5.3から5.4に変更されました。
私はいつもstraceで同じ問題を抱えていました。
アプリケーションを別のフレームワークに移植しました。問題はなくなります。
POST要求を実行するソースサーバーのコードは変更されていません。