Failed to Fetch, когда запрос не завершился неудачей и код вроде бы выполняется нормально
Я использую elasticsearch-dsl
для построения 2 сложных запросов и выполнения их над несколькими индексами одновременно с MultiSearch
. Это работает нормально в 99% случаев, но редко происходит сбой для некоторых входных параметров с такой ошибкой, выводимой на бэкенде (Django):
2022-09-29 03:37:23,592 ERROR: https://aws_instance_name.us-east-1.es.amazonaws.com:443
При таких входных параметрах он никогда не выполняется успешно, так что он определенно зависит от входных данных. Код бэкенда Django
python
выполняется нормально до тех пор, пока ответ не будет возвращен, что я наблюдаю с помощью операторов logger.info
, но ошибка остается. Когда я задаю пустой ответ, чтобы исключить проблемы с конкретизацией ответа, он все равно не работает, так что это как будто не проблема ответа. Я выполнил оба запроса по отдельности (на бэкенде они выполняются вместе в одном с MultiSearch
, так что потенциально это может быть проблема в самом MultiSearch
) над теми же самыми индексами в AWS Kibana
и оба возвращают результаты в течение пары секунд. Интересно, есть ли способ вывести подробную информацию о проблеме, а не просто бесполезное сообщение ERROR:aws_instance
? Что еще может пойти не так?
На данный момент у меня есть только 2 идеи: заменить списки python массивами numpy, чтобы избежать возможных ошибок памяти (однако MemoryError
не выводится, так что, скорее всего, проблема не в этом) или заменить MultiSearch
одиночными Search
в elasticsearch-dsl
и попробовать, будет ли это работать. Любые предложения будут очень признательны. Я не помещаю здесь код, потому что неясно, что именно идет не так и в какой части кода возникает проблема, а база кода огромна. Однако, здесь вы можете найти код конструкции MultiSearch
, а также остальное:
https://github.com/broadinstitute/seqr/blob/master/seqr/utils/elasticsearch/es_search.py#L655