def run_scan(state):
circuits = ExitScan(state)
url = 'https://check.torproject.org'
outfile = open("exit-addresses.%s.json" % datetime.datetime.utcnow().isoformat(), 'w+')
all_tasks_done = defer.Deferred()
tasks = []
def pop(circuits):
try:
tasks.append(task.deferLater(
reactor, 0, fetch, circuits.next(), url, state))
reactor.callLater(.2, pop, circuits)
except StopIteration:
results = defer.DeferredList(tasks)
results.addCallback(save_results, outfile)\
.addCallback(lambda _: outfile.close)\
.chainDeferred(all_tasks_done)
reactor.callLater(0, pop, circuits)
return all_tasks_done
评论列表
文章目录