Мне очень жаль, я не смог упростить пример (возможно, благодаря вашим подсказкам, я его уменьшу).
Это мой код.
Базовое представление таково: в реальном примере у меня около 100 IP-адресов и 10 токенов (но в примере я намеренно добавил 28 токенов). Каждый токен можно использовать 4 раза в минуту (фактически он должен использоваться каждые 25 секунд).
Каждый IP-адрес должен использовать только один токен и отправлять запрос GET на URL-адрес
code> и завершает его. Если IP 1.1.1. использовал токен a, то он больше не должен использовать токен b, и следующая итерация должна перейти к IP 2.2.2.2.
У меня проблема: на самом деле у меня есть 10 токенов, и я добавляю Sleep(5), чтобы между первым и пятым был промежуток не менее 25 секунд, но проблема с мой текущий код:
он использует первый токен, второй, третий, четвертый и пятый. Затем, поскольку последнее использование токена a было 25 секунд назад, он снова использует токен a. Хотя я исключаю, что следует использовать все токены.
В моем текущем коде проблема в том, что если у меня более 5 токенов, у меня возникнет эта проблема.
Я знаю, что один из способов — уменьшить значение сна, но если я увеличу количество токенов в будущем, мне также следует изменить значение сна.
Не могли бы вы мне помочь?
tokens = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
dbs = [{'token': x, 'time': None} for x in tokens]
client_ips = [{'ip': x['ip'], 'desc': x['desc']} for x in clients]
thirty_days_ago = (datetime.datetime.now() - datetime.timedelta(days=days)).strftime('%Y-%m-%d')
requests_response_list = []
checked_ips = set()
for ip in client_ips:
for db in dbs:
now = datetime.datetime.now()
if ip['ip'] in checked_ips:
continue
if db['time']:
elapsed_time = (now - db['time']).total_seconds()
if elapsed_time < 25:
continue
print(f"IP is {ip['ip']}, Token: {db['token']}.")
response = requests.get(
url=f"http://my.url.com/ip_addresses/{ip['ip']}",
headers={
'accept': 'application/json',
'x-apikey': db['token'],
}
).json()['data']['attributes']
for report in response:
# date'] is a timestamp value, so I convert it to a date Y-m-d.
date = date
if thirty_days_ago
Подробнее здесь: https://stackoverflow.com/questions/791 ... re-not-use
При переборе двух списков используются только первые пять членов, а остальные не используются. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как работает индексация Pytorch со списками списков против списков списков против тензоров
Anonymous » » в форуме Python - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-