2015-11-14 3 views
0

Я следил за grequests usage example, но я пытаюсь добавить обратную связь с результатами. Процент от выполненных запросов. Как я мог это достичь?Добавление обратной связи по ходу работы в задаче Grequests

import grequests 

urls = [ 
    'http://www.heroku.com', 
    'http://python-tablib.org', 
    'http://httpbin.org', 
    'http://python-requests.org', 
    'http://kennethreitz.com' 
] 

def feedback(r, **kwargs): 
      print "%s fetched." % r.url 
      return r 

rs = (grequests.get(u, callback=feedback) for u in urls) 
res = grequests.map(rs) 
+0

Отъезд: http://stackoverflow.com/questions/3173320/text-progress-bar-in-the-console, как сделать обратную связь, но Реальная проблема заключается в том, что вызов блоков .map. – domoarrigato

ответ

1

Попробуйте это:

from gevent import monkey 
monkey.patch_all() 
import gevent 
import sys 
import requests 

rs = [gevent.spawn(requests.get, u) for u in urls] 
[i.start() for i in rs] 
while 1: 
    gevent.sleep() 
    percent = 0.0 
    for i in rs: 
     if i.successful(): 
      percent += 100/len(rs) 
    sys.stdout.write(('='*int(percent))+(''*(100-int(percent)))+("\r [ %d"%percent+"% ] ")) 
    sys.stdout.flush() 
    if percent == 100: 
     sys.stdout.write('\n') 
     sys.stdout.flush() 
     break