Функциональные docstrings и имена являются изменяемыми свойствами. Можно сделать что-либо, что Вы хотите во внутренней функции или даже имеете несколько версий внутренней функции, между которой выбирает makedynamo (). Никакая потребность создать любой код из строк.
Вот отрывок из интерпретатора:
>>> def makedynamo(i):
... def innerdynamo():
... print "in dynamo %d" % i
... innerdynamo.__doc__ = "docstring for dynamo%d" % i
... innerdynamo.__name__ = "dynamo%d" % i
... return innerdynamo
>>> dynamo10 = makedynamo(10)
>>> help(dynamo10)
Help on function dynamo10 in module __main__:
dynamo10()
docstring for dynamo10
1–5 МБ с использованием rest - не такой уж большой набор данных. Ограничивающим фактором, скорее всего, является память. В зависимости от того, как вы генерируете xml, у вас может не хватить ресурсов сервера, если у вас высокий трафик службы.
Если вы используете потоковую память для генерации xml, это не проблема. создание dom-дерева с последующим его выводом потребует гораздо большего объема памяти.
Но даже если ваше dom-дерево займет в 10 раз больше памяти, чем необработанный xml, вам потребуется 40 одновременных подключений для заполнения 2 ГБ памяти сервера. Так что это может не быть проблемой в вашей ситуации.
Менее вероятны проблемы с памятью на стороне клиента. но 5 десериализация дампа xml размером 5 МБ не должна быть проблемой на любом нормальном компьютере.
1-5 МБ - это нормально, если вы предоставляете пользователю какую-либо информацию о ходе выполнения. Веб-службы работают через HTTP, что нормально, когда дело касается накладных расходов на большие наборы данных, настоящая проблема - это XML. XML чаще всего добавляет огромные накладные расходы к размеру сериализованных данных. Я бы рассмотрел JSON или Hessian для больших наборов данных :)