2012-04-26 2 views
0

次のPythonスクリプトが正常に動作します:PythonのHttp接続を再利用するにはどうしたらいいですか?

#!/usr/bin/env python 
import httplib, urllib 
params = urllib.urlencode({'url':'xxx/xxx/0AAAUw7n6qPQ922.jpg', 'key': 'xxxx'}) 
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/html"} 
conn = httplib.HTTPConnection("xxx.test.com") 
conn.request("POST", "/xx/delete", params, headers); 
response = conn.getresponse() 
print response.status, response.reason 
data = response.read() 
print data 
conn.close() 

しかし、私はポスト回以上を実行するために、オープンHTTP接続を再利用する場合、それは動作しません:

#!/usr/bin/env python 
import httplib, urllib 
import sys 

if len(sys.argv)<2: 
    print "invalid input" 
    sys.exit(0) 

path = sys.argv[1] 
f = open(path) 
lines = f.readlines() 
f.close() 

conn = httplib.HTTPConnection("xxx.test.com") 
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/html"} 
for line in lines: 
    if len(line) < 6: 
    continue 
    params = urllib.urlencode({'url': line, 'key': 'xxxx'}) 
    conn.request("POST", "/xx/delete", params, headers); 
    response = conn.getresponse() 
    print response.status, response.reason 
    data = response.read() 
    print data 
conn.close() 

リターン・ステータスは次のとおりです。 500サーバーエラー

パフォーマンスを向上させるためにhttp接続を再利用したいだけですが、どうすればこの問題を解決できますか?

ありがとうございます!

+0

DanさんはApacheの可能性がありますか、Webサーバーが次のループの前に接続をフラッシュしていますか?私はこれが非常にWebサーバーのDDoSを防止するために大げさであることを知っている..あなたは何とかそこにリセットパケットを取得している場合、毎回開く必要があるために見て興味深いかもしれません.. – dc5553

+0

笑、私はそれを修正する方法を知っている。文字列の改行文字( '\ n')を削除するだけです。それはうまく動作します! – Dan

答えて

0

文字列の改行文字( '\ n')を削除します。それはうまく動作します!

関連する問題