如何使用python请求通过另一个代理重试连接?
问题描述:
即时通讯使用requests.post随机代理这样的:如何使用python请求通过另一个代理重试连接?
url = "http://localhost"
socks = "{ "http": "random_socks()" }"
payload = { "status" : "1" }
headers = { "user-agent" : "useragent"}
post = requests.post(url, payload=json.dumps(payload), headers=headers, proxies=socks)
print post.text
我需要使用后随机袜子,然后重试,如果有一些代理相关的错误,直到它完成。
据我所知:需要循环事件后,检查是否有超时或其他代理错误,并重试后,直到它会完成。 我该怎么做?
答
没有任何检查:
retries = 5
post = None
for i in range(retries):
try:
post = requests.post(url, payload=json.dumps(payload),
headers=headers, proxies=socks)
print(post.text)
break
except:
pass
time.sleep(xxx)
else:
print('no fetch')
这应该这样做,但我不知道"{ "http": "random_socks()" }"
是什么意思。袜=我想这random_socks()
是一种功能,使通话应该是不同的
post = requests.post(url, payload=json.dumps(payload),
headers=headers, proxies={"http": random_socks()})
random_socks()
应该返回1 http代理不是一个列表。它应该在循环中调用,以便代理将始终重新编辑。
如果我想知道实际发生的情况,我将列出这些袜子代理,然后我将它们循环,以便记录哪一个我使用
for each_proxy in list_of_proxies:
try:
post = requests.post(url, payload=json.dumps(payload),
headers=headers, proxies={'http':each_proxy })
print(post.print)
break
except:
time.sleep(1)
else:
print('no data')
答
你的理解对不对,检查错误,在requests.post
,然后用另一个代理重试,如果有一个代理的错误。例如使用递归:
from requests.exceptions import ProxyError
def post_proxy(url, payload, headers):
try:
post = requests.post(url, payload=json.dumps(payload), headers=headers,
proxies={"http": random_socks()})
return post.text
except ProxyError:
return post_proxy(url, payload, headers)
url = "http://localhost"
payload = {"status": "1"}
headers = {"user-agent": "useragent"}
print post_proxy(url, payload, headers)
我需要这样做,而不使用多个代理在socks变量 – Dyniz