Уведомления

Группа в Telegram: @pythonsu

#1 Март 28, 2017 06:25:04

sb04p2
Зарегистрирован: 2017-03-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

повторить провалившиеся условие

примерный код

 def files(inject):  
открываем тхт с данными payload  
def fgfg():
открываем тхт с проксями
def osn(mailp):
    try:
        session = requests.Session()
        proxy_line = fgfg()
        session.proxies = {'http' : 'socks5://' + proxy_line, 'https' : 'socks5://' + proxy_line}
        url = 'https://auth.com/v1/oauth/token'
        payload = {
'client_id':mailp[0][1].replace('\n', ''),
'client_secret':mailp[0][0]
}
        r = session.post(url, timeout=15, data=payload)
    except:
        pass
def main():
    mailp = files(inject)
    p = ThreadPool(5)
    p.map(osn, mailp)
if __name__ == '__main__':
    main()

как в def osn(mailp): осуществить повтор запроса с mailp тем который по той или иной причине не прошел с первого раза из-за проблем с сетью(прокси)

т.е. допустим все идет хорошо и возник скажем таймаут для client_id = 2 и client_secret = 4 как повторить запрос с этими же параметрами и при этом будет браться новый прокся (как бы повторяем функцию по новой)

пока использую после except запись в файл client_id + client_secret (mailp) и после окончания всего процесса прогоняю по новой то что попало в except

пихнуть return в except?

Офлайн

#2 Март 28, 2017 16:27:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9999
Репутация: +  857  -
Профиль   Отправить e-mail  

повторить провалившиеся условие

sb04p2
 p.map(osn, mailp)
Вот в этом месте можешь вызывать другую функцию, которая вызывает один раз функцию osn() и если та застряла, запускала бы её ещё раз. А чтобы определить застряла ли функция osn(), внутри неё должен быть такой try … except , чтобы возвращалось True/False в случае успеха/сбоя.

Но лучше всего генерить список прокси отдельно и для osn() уже подобранный прокси подавать снаружи через аргумент. Так ты сможешь прокси подбирать произвольными способами, при этом не затрагивая код, в котором происходит само подключение через прокси.



Отредактировано py.user.next (Март 28, 2017 16:28:59)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version