Days of Liris
2005/11/29
twisted.web.clientとプロキシサーバ
Author: liris
-
Modified: 2005/11/29 19:21
Tag:
dev
wisted.web.clientはWebへのアクセスを提供するクラスです。標準のライブラリで言うhttplibに相当しますが,httplibが
ブロッキングなのに対してtwisted.web.clientはtwistedなのでノンブロッキングです。ちなみに、
twisted.web2.clientはまだないです。でも、悲しいことにtwisted.web.clientはプロキシサーバに対応していません。
プロキシサーバを通さないと外にアクセスできないような環境ではうれしくないです。Webで調べても将来対応するのか,勝手にやってくれというスタンスなのか,よくわかりません。よくわからないものは自分でやっちゃうので、やっちゃいました(webclient.py)。
使いかたは,普通のやつと同じですが,proxy_host,
proxy_portを指定します。ただ、1時間ぐらいで作ったので,getPageしか対応していません。downloadPageとかはだめ。
redirectに対応していません。あと、認証プロキシもやっていません。単に面倒だからです。こんな感じになります。
import os
import os.path
import sys
from twisted.internet import reactor
import webclient
def got_page(data):
print data
reactor.stop()
def got_error(failure):
print >> sys.stderr, "ERROR: " , failure.getErrorMessage()
reactor.stop()
if __name__ == "__main__":
import getopt
opts, args = getopt.getopt(sys.argv[1:], "h:p:n:")
for (k, v) in opts:
if k == "-p":
proxy_host = v
elif k == "-n":
proxy_port = v
url = args[0]
webclient.getPage(url, proxy_host = proxy_host, proxy_port = int(proxy_port)).addCallback(
got_page).addErrback(
got_error)
reactor.run()
うーん、twistedは楽チン。
webclient.py