Python CGI и STDIN - PullRequest
       17

Python CGI и STDIN

1 голос
/ 08 мая 2009

Я использую pycurl для загрузки файла через пут и скрипт python cgi для получения файла на стороне сервера. По сути, код на стороне сервера:

while True:
   next = sys.stdin.read(4096)
   if not next:
       break
   #.... write the buffer

Это похоже на работу с текстом, но не с двоичными файлами (я на Windows). Для двоичных файлов цикл, выполняющий stdin.read, прерывается после получения чего-либо размером от 10 до 100 КБ. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 08 мая 2009

Вам нужно запустить Python в двоичном режиме. Измените свой CGI-скрипт с:

#!C:/Python25/python.exe

или как там сказано:

#!C:/Python25/python.exe -u

Или вы можете сделать это программно следующим образом:

msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)

перед началом чтения с stdin.

0 голосов
/ 08 мая 2009

Используйте mod_wsgi вместо cgi. Он предоставит вам входной файл для загрузки, который правильно открыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...