Загрузите потенциально огромный текстовый файл на обычный WSGI-сервер в Python - PullRequest
1 голос
/ 09 июля 2009

Мне нужно загрузить потенциально огромный текстовый файл в очень простое wsgi-приложение, не занимая всю доступную память на сервере. Как мне это сделать? Я хочу использовать стандартные модули Python и по возможности избегать сторонних модулей.

Ответы [ 3 ]

3 голосов
/ 09 июля 2009

wsgi.input должен быть файлом, похожим на объект потока. Вы можете читать из этого в блоках, и записывать эти блоки непосредственно на диск. Это не должно занимать значительную память.

А может я неправильно понял вопрос?

2 голосов
/ 31 июля 2009

Если вы используете модуль cgi для анализа ввода (который используется большинством фреймворков, например, Pylons, WebOb, CherryPy), он автоматически сохранит загруженный файл во временный файл и не загрузит его в память.

0 голосов
/ 09 июля 2009

Python знает, как иметь дело с gzip и zip-файлом Я бы посоветовал вам сжать файл (используя приложение, совместимое с zip или gzip, например, 7-zip) на вашем клиенте, а затем загрузить его на сервер.

Еще лучше: напишите скрипт, который автоматически сжимает ваш файл и загружает его. Это возможно с помощью стандартной библиотеки.

...