Мне нужно загрузить потенциально огромный текстовый файл в очень простое wsgi-приложение, не занимая всю доступную память на сервере. Как мне это сделать? Я хочу использовать стандартные модули Python и по возможности избегать сторонних модулей.
wsgi.input должен быть файлом, похожим на объект потока. Вы можете читать из этого в блоках, и записывать эти блоки непосредственно на диск. Это не должно занимать значительную память.
А может я неправильно понял вопрос?
Если вы используете модуль cgi для анализа ввода (который используется большинством фреймворков, например, Pylons, WebOb, CherryPy), он автоматически сохранит загруженный файл во временный файл и не загрузит его в память.
Python знает, как иметь дело с gzip и zip-файлом Я бы посоветовал вам сжать файл (используя приложение, совместимое с zip или gzip, например, 7-zip) на вашем клиенте, а затем загрузить его на сервер.
Еще лучше: напишите скрипт, который автоматически сжимает ваш файл и загружает его. Это возможно с помощью стандартной библиотеки.