@id2669099

Почему не устанавливается webhook telegram через celery?

Здравствуйте, пытаюсь установить webhook для telegram-бота, для этого у меня есть task в celery.
Таск очень простой: он просто делает post request на адрес https://api.telegram.org/bottoken/setWebhook, где в в теле запроса содержит url куда слать вебхуки. Казалось бы чего тут сложного? Запрос проходит, telegram отвечает что вебхук установлен, но ничего не шлёт, при запросе метода https://api.telegram.org/bottoken/getWebhookInfo, telegram отвечает вот так:
{
    'ok': True, 
    'result': {
        'url': 'https://<url>/75d78ee1-835f-461b-85bc-e5a755a829d4/webhook/telegram/', 
        'has_custom_certificate': False, 
        'pending_update_count': 0, 
        'last_error_date': 1518608932, 
        'last_error_message': 'SSL error {337047686, error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}', 
        'max_connections': 40
    }
}


ну ок, допустим что сертификат который был получен у letsencrypt не подходит (хотя на сайте ssllabs у него класс A), но он подходит, потому что если я делаю такой же самый request, с того же самого сервера, но не в контексте таска, который выполняет воркер селери, то всё получается и telegram шлёт на этот адрес всё и никакой ругани на ssl нет!
Подскажите, чем так celery не угодил телеграму? У меня в голове просто связности нет.

Вот так я делаю request для установки webhook:
data = {
    'url': 'https://<url>/75d78ee1-835f-461b-85bc-e5a755a829d4/webhook/telegram/',
}

requests.post('https://api.telegram.org/bottoken/setWebhook', json=data)


P.S.:
Вот ответ после реквеста без celery:
{
    'ok': True, 
    'result': {
        'url': 'https://<url>/75d78ee1-835f-461b-85bc-e5a755a829d4/webhook/telegram/', 
        'has_custom_certificate': False, 
        'pending_update_count': 0, 
        'max_connections': 40
    }
}
  • Вопрос задан
  • 1372 просмотра
Пригласить эксперта
Ответы на вопрос 1
redflasher
@redflasher
Full-stack developer
  1. Протестируйте свой сайт на https://www.ssllabs.com
  2. Если значение строчки Chain issues не "None", то дело в настройке ssl-сертификата на сервере.

Если вы используете сертификат от letsencrypt, то там есть 2 файла с сертификатом:
  • cert.pem
  • fullchain.pem

У меня (я использую nginx+php, но суть не меняется) был cert.pem и была та же ошибка. Переключил на fullchain.pem и ошибка исчезла.
Ну и плюс дополнительные настройки сервера указал. Если указанные выше действия не помогут и захотите разобраться вместе - пишите, попробуем разобраться...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы