Эластичный поиск с ошибкой SSL скрипта PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Эластичный поиск с ошибкой SSL скрипта Python

Сообщение Anonymous »

Я получаю эту ошибку при запуске скрипта Python.

Код: Выделить всё

elastic_transport.TlsError: TLS error caused by: TlsError(TLS error caused by: SSLError([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: CA cert does not include key usage extension (_ssl.c:1020)))
Я установил эластичный поиск с помощью Docker, и у меня есть контейнер для эластичного поиска и еще один для Kibana. Сейчас этому скрипту 9 месяцев, но я не знаю, что я тогда сделал по-другому, понятия не имею, почему он не работает. Я получаю данные от групп через API Telegram и подключаю их к эластичному поиску, но получаю ошибку. Я скопировал сертификацию из контейнера, добавил ее в доверенные корневые центры сертификации. НИЧЕГО. Я запутался и, надеюсь, кто-нибудь поможет мне с конкретным кодом, я не нашел решения.

Код: Выделить всё

groups_file = open('telegram_channels.txt', 'r')
# enter your channel group id -100 after this digit

# Set the time range to get messages from
start_time = datetime.now() - timedelta(hours=24)
flag = 0
groups = groups_file.readlines()

def greet():
while True:
days = int(input('Choose the number of days that represent the period within which data will be'
' collected (e.g. last 5 days) (Max. 14 days)\n>>>'))
if days > 0 and days < 15:
break
return days

async def get_group_messages(days):
# Create a Telegram client with the specified API ID, API hash and phone number
client = TelegramClient('session_name', int(api_id), api_hash)
await client.connect()

# Check if the user is already authorized, otherwise prompt the user to authorize the client
if not await client.is_user_authorized():
await client.send_code_request(phone_number)
await client.sign_in(phone_number, input('Enter the code: '))

data = []

# Get the ID of the specified group
for index in range(len(groups)):
group = await client.get_entity(groups[index])
date_today = datetime.now()
lower_bound = date_today - timedelta(days=days)

# below commented code is used for specified time range
async for message in client.iter_messages(group, min_id=1):
if str(message.date) < str(lower_bound):
break

message_reactions = message.reactions
reactions = []
if message_reactions:
reaction_counts = message_reactions.results

for reaction_count in reaction_counts:
emoji = reaction_count.reaction.emoticon
count = reaction_count.count
reactions.append({'emoji': emoji, 'count': count})

data_object = {"channel": group.title, "date": message.date, "text": message.text,
"views": message.views,
"reactions": reactions}

data.append(data_object)

return data

def index_messages_to_elasticsearch(messages):
es = Elasticsearch([{'host': es_host, 'port': es_port, 'scheme': es_scheme}],
basic_auth=(es_user, es_pass))

for message in messages:
es.index(index='telegram', body=message)

async def main():
days = greet()
messages = await get_group_messages(days)
index_messages_to_elasticsearch(messages)

# Run the main function
asyncio.run(main())
Я пробовал большинство вещей, но помню, что, когда я запускал код в прошлом году, я не делал ничего особенного, самой сложной частью была настройка экосистемы эластичного поиска.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -ssl-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»