ls -alFi
cur.execute("SELECT * FROM sometable WHERE ? = ?;",(where,query))
return(False)
. Просто при вызове функции может пойти что то не так. Поэтому, есть ответ когда все хорошо, а есть False, который я дальше обрабатываю и в зависимости от того что в результате или пишу ответ или ничего не пишу, можно так написатьres_from_url = proxyfunction(owm_url, owm_data)
if res_from_url:
print(res_from_url)
else:
print("[ERROR] Данные не получены, действуем по плану Б")
except requests.exceptions.ConnectTimeout as time_out_sory:
except Exception as all_except:
в этом случае будут обрабатыватся вообще все ексепшены а не только таймаут. Можно написать такtry:
res_on_owm = requests.get(owm_url, proxies = proxes_db.get(proxy_now).get("proxy_url"), params = owm_data, timeout = int(1))
except requests.exceptions.ConnectTimeout as time_out_sory:
# Тут можно выводить сообщение по таймауту, а можно не выводить
# print(f"msg = {time_out_sory}")
proxy_keys_list.remove(proxy_now)
if len(proxy_keys_list) <= 0:
return(False)
except Exception as all_except:
# Тут можно выводить сообщение по всем ошибкам в результате запроса
# print(f"msg = {all_except}")
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import os
import time
import requests
import random
def proxyfunction(owm_url,owm_data):
proxes_db = {
"prox_1" : {
"proxy_url" : {
"http" : "http://uzer:12345@1.1.1.1:3128/",
"https": "https://uzer:12345@1.1.1.1:3128/"
}
},
"prox_2" : {
"proxy_url" : {
"http" : "http://uzer:12345@1.1.1.2:3128/",
"https": "https://uzer:12345@1.1.1.2:3128/"
}
},
"prox_3" : {
"proxy_url" : {
"http" : "http://uzer:12345@1.1.1.3:3128/",
"https": "https://uzer:12345@1.1.1.3:3128/"
}
},
}
proxy_keys_list = list(proxes_db.keys())
while True:
random.seed()
proxy_now = random.choice(proxy_keys_list)
try:
res_on_owm = requests.get(owm_url, proxies = proxes_db.get(proxy_now).get("proxy_url"), params = owm_data, timeout = int(1))
except requests.exceptions.ConnectTimeout as time_out_sory:
# Тут можно выводить сообщение по таймауту, а можно не выводить
# print(f"msg = {time_out_sory}")
proxy_keys_list.remove(proxy_now)
if len(proxy_keys_list) <= 0:
return(False)
else:
if res_on_owm.status_code == requests.codes.ok:
resjson = res_on_owm.json()
if resjson.get("cod") == 200:
return(resjson)
elif res_on_owm.status_code == 401:
return(False)
def main(argv=sys.argv):
owm_url = "http://api.openweathermap.org/data/2.5/weather"
owm_data = {
"appid" : "12345",
"lat": "32.055558",
"lon": "34.756480",
"units": "metric"
}
res_from_url = proxyfunction(owm_url, owm_data)
if res_from_url:
print(res_from_url)
if __name__ == "__main__":
sys.exit(main())
import json
не нужен. ./configure
make
make install
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import os
import time
import requests
import random
def main(argv=sys.argv):
proxes_db = {
"prox_1" : {
"proxy_url" : {
"http" : "http://uzer:12345@1.1.1.1:3128/",
"https": "https://uzer:12345@1.1.1.1:3128/"
}
},
"prox_2" : {
"proxy_url" : {
"http" : "http://uzer:12345@1.1.1.2:3128/",
"https": "https://uzer:12345@1.1.1.2:3128/"
}
},
"prox_3" : {
"proxy_url" : {
"http" : "http://uzer:12345@1.1.1.3:3128/",
"https": "https://uzer:12345@1.1.1.3:3128/"
}
},
}
retries = True
openweathermap_api_url = "http://api.openweathermap.org/data/2.5/weather"
data = {
"appid" : "123456789",
"lat": "32.055558",
"lon": "34.756480",
"units": "metric"
}
proxy_keys_list = list(proxes_db.keys())
while retries:
random.seed()
proxy_now = random.choice(proxy_keys_list)
res_on_owm = requests.get(openweathermap_api_url,proxies = proxes_db.get(proxy_now).get("proxy_url"),params = data)
if res_on_owm.status_code == requests.codes.ok:
resjson = res_on_owm.json()
if resjson.get("cod") == 200:
print("[INFO ] temp = {a}".format(a = str(resjson.get("main")["temp"])))
break
elif res_on_owm.status_code == 401:
print(f"[INFO ] Ошибка appid. Проверте appid в личном кабинете https://home.openweathermap.org/api_keys")
print("[INFO ] Сообщение сервера. Cod: {a}, Message: {b}".format(a = str(res_on_owm.json().get("cod")),b = str(res_on_owm.json().get("message"))))
break
proxy_keys_list.remove(proxy_now)
if len(proxy_keys_list) <= 0:
print(f"[ERROR ] Список прокси серверов пуст")
retries = False
break
print(f"[INFO ] Попыток осталось: {len(proxy_keys_list)}, proxy now is {proxy_now}")
time.sleep(2)
if __name__ == "__main__":
sys.exit(main())
proxys = {
"prox_1" : {
"proxy_name" : "p1.proxy.ru",
"proxy_scope" : 10
},
"prox_2" : {
"proxy_name" : "p2.proxy.ru",
"proxy_scope" : -3
}
}
proxys = ["p1.proxy.ru","p2.proxy.ru","p3.proxy.ru"]
retries = len(proxys)
while retries:
random.seed()
proxy = random.choice(proxys)
rq=requests.get(f'api.openweathermap.org/data/2.5/weather?lat=35&lon=139', proxies = proxy)
if res.status_code == requests.codes.ok:
break
retries -=1
else:
print(f"No proxy find")
# Что то делаем, к примеру идем спать, или как то проверяем что вообще сеть есть