День добрый. Пытаюсь передать с помощью httplib файл в apache cgi.
Клиент:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import httplib
import sys
conn = httplib.HTTPConnection("127.0.0.1")
file = open("in.zip")
seek_data = 0
data = file.read(4096)
while data:
conn.connect()
size_data = sys.getsizeof(data)
struct = {'seek': seek_data, 'data': data}
encode_data = urllib.urlencode(struct)
seek_data += size_data
conn.request("POST", "/", encode_data)
response = conn.getresponse()
conn.close()
data = file.read(4096)
Сервер:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# enable debugging
import cgitb
import sys
import os
import urlparse
cgitb.enable()
print "Content-Type: text/plain\r\n\r\n"
str = ''
for char in sys.stdin.readline():
str += char
pars = urlparse.parse_qs(str)
data_block = pars['data'][0]
seek_block = pars['seek'][0]
size_data = sys.getsizeof(data_block)
if int(seek_block) == 0:
if os.path.exists('out.zip'):
os.remove('out.zip')
dumped = open('out.zip', 'wb')
else:
dumped = open('out.zip', 'a')
dumped.seek(int(seek_block), 0)
dumped.write(data_block)
Проблема в том, что процесс идёт очень долго. Как я понимаю, причина в открытии и закрытии соединения (иначе POST не работает). Увеличение размера чтения файла, результата не даёт.
Есть ли способ передать в apache cgi поток данных (из файла например) быстрее, чем через POST.
Заранее спасибо.