我用了这个剧本
from twisted.internet import reactor, threads
from urlparse import urlparse
import httplib
import itertools
concurrent = 200
finished=itertools.count(1)
reactor.suggestThreadPoolSize(concurrent)
def getStatus(ourl):
url = urlparse(ourl)
conn = httplib.HTTPConnection(url.netloc)
conn.request("HEAD", url.path)
res = conn.getresponse()
return res.status
def processResponse(response,url):
print response, url
processedOne()
def processError(error,url):
print "error", url#, error
processedOne()
def processedOne():
if finished.next()==added:
reactor.stop()
def addTask(url):
req = threads.deferToThread(getStatus, url)
req.addCallback(processResponse, url)
req.addErrback(processError, url)
added=0
for url in open('urllist.txt'):
added+=1
addTask(url.strip())
try:
reactor.run()
except keyboardInterrupt:
reactor.stop()
当我尝试运行脚本$python时测试.py在
它只打印url不做cUrl或发送HTTP请求。。在
如何为每个进程发送HTTP或cURL进程
谢谢
测试代码,使用
inlineCallbacks
和deferToThread
。还使用defer.gatherResults
来知道何时处理了所有延迟(而不是OP中的counter方法):但是,如果URL的格式不包含“http://”,那么这应该是可行的, 如果它们确实包含“http://”,则在注释中有相应的解决方案
此外,我再次检查了httplib
相关问题 更多 >
编程相关推荐