Я заметил узкое место в API, над которым я недавно работал, это связано с тем, как форматируется ответ json, особенно с необходимостью перебирать отношения для форматирования ответа.Сам запрос к базе данных занимает ~ 1 с, в то время как форматирование занимает более 20 с для выборки размером 500 записей.
запрос
data = Item.query.limit(500).all()
форматирование
data = [{
'attributes': {
'id': item.id,
[...]
'approved': item.approved,
}
'sizes': [{
'size': size.size,
'size_fr': size.size_fr,
'quantity': size.quantity,
'available': size.available,
'out_of_order': size.out_of_order
} for size in item.sizes],
'tags': [{
'tag': tag.tag,
'tag_fr': tag.tag_fr,
'id': tag.id
} for tag in item.tags],
'images': [{
'url': image.url,
'primary': image.primary,
'background_removed': image.background_removed,
'id': image.id
} for image in item.images],
} for item in data]
Очевидно, что проблема заключается в переборе взаимосвязей на каждой итерации сбора данных, но я не уверен, как еще обрабатывать данные.
Я предполагаю, что должен быть более эффективный способ обработки и форматирования данных.