Обратите внимание, что «доходность» следует избегать, если в этом нет крайней необходимости. В частности, «yield» будет неэффективным, если получится множество небольших строк. Это связано с тем, что спецификация WSGI требует, чтобы после каждой полученной строки ответ очищался. Для Apache / mod_wsgi очистка означает, что каждая строка вытесняется через выходную бригаду и систему фильтрации Apache в сокет. Не обращая внимания на издержки системы выходного фильтра Apache, писать множество маленьких строк в сокет просто плохо с самого начала.
Эта проблема также существует, когда массив строк возвращается из приложения, поскольку очистка также должна выполняться между каждой строкой в массиве. Это потому, что строка рассматривается как итеративная, а не как список. Таким образом, для предварительно сформированного списка строк гораздо лучше объединить отдельные строки в одну большую строку и вернуть список, содержащий только эту строку. Это также позволяет реализации WSGI автоматически генерировать Content-Length для ответа, если он не был указан явно.
Просто убедитесь, что при объединении всех строк в списке, результат возвращается в списке. Если этого не сделано и вместо этого возвращается строка, эта строка обрабатывается как итеративная, где каждый элемент в строке представляет собой строку из одного символа. Это приводит к тому, что после каждого символа выполняется очистка, что будет еще хуже, чем если бы строки не были соединены.