Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 16, 2008 00:28:05

DOMINUS
От:
Зарегистрирован: 2008-02-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

Сподіваюсь ніхто не буде проти, якщо я виражусь українською.
В мене виникла проблема в написанні скріпта для пересилання великих файлів мережею.
Я використовую такий код сервера (ця частина відповідає лише за пересилання данних клієнту):
self.path+='\\%s' % self.name
s=open(self.path,'rb')

datcl.send(s.read())
datcl.send('end of trusmition')

Відповідно кклієнтський скріпт приймання такий:
while 1:
dt=dat.recv(4096)
self.loaded+=dt
if dt.endswith('end of trusmition'): break
Ця штука працює, але при розмірах файлів більше 10 Mb виникають великі затримки і сервер практично висить.
Порадьте щось більш оптимальне, будь-ляска



Офлайн

#2 Фев. 16, 2008 07:00:38

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

Ну дык у тебя весь файл в память читается. Попробуй отдавать итератором. На досуге почитай
http://softwaremaniacs.org/blog/2006/04/18/controlled-download/ и http://softwaremaniacs.org/blog/2007/01/08/controlled-download-2/



Отредактировано (Фев. 16, 2008 07:01:10)

Офлайн

#3 Фев. 17, 2008 10:58:37

DOMINUS
От:
Зарегистрирован: 2008-02-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

j2a
Дякую, дуже допомогло. Тепер все хоч і не дуже швидко, але стабільно пересилається!!!



Офлайн

#4 Фев. 17, 2008 20:05:33

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

DOMINUS
j2a
Дякую, дуже допомогло. Тепер все хоч і не дуже швидко, але стабільно пересилається!!!
в чем прикол писать вопросы на украинском, якщо підпис у вас російською?



Офлайн

#5 Фев. 17, 2008 20:17:01

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

bialix, да всё равно. Я и без переводчика понял и вопрос, и ответ :) А вот то, что человек код в bb-тег code не обернул, то да - заслуживает порицания ;)



Отредактировано (Фев. 17, 2008 20:18:10)

Офлайн

#6 Фев. 18, 2008 15:26:44

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

100%

Офлайн

#7 Фев. 19, 2008 03:00:21

DOMINUS
От:
Зарегистрирован: 2008-02-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

bialix
Підпис взятий з фільму і використовую я його в оригіналі :)
j2a
А код і так всі зрозуміли :)
До речі, я тільки починаю програмити і це перше більш-менш складне, що я зробив. Якщо є не дуже зайнятий народ, то через кілька днів можу закинути повний код ( після того як доведу його до ладу) на загальну оцінку, протестіть, так сказати і напишіть відгуки, можливо поради



Отредактировано (Фев. 19, 2008 03:02:14)

Офлайн

#8 Фев. 19, 2008 15:55:58

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

j2a
А вот то, что человек код в bb-тег code не обернул, то да - заслуживает порицания ;)
определенно.



Офлайн

#9 Фев. 23, 2008 01:07:57

DOMINUS
От:
Зарегистрирован: 2008-02-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

В мене готовий більш-менш стабільний код севера і клієнта. Зараз сервер може передавати клієнту файли і папки. Це все працює лише в мережі.
Доступні команди:
list - показує вміст активної папки
chdir - перейти в нову папку, яку перед тим показав “ліст”
rootdir - перейти в кореневий розшар
updir - на рівень вверх
download - закачати папку або файл (файл повинен мати повну назву)

В клієнті передбачено, що у випадку вказання неправильного шляху для збереження, все буде копіюватись на диск С:

Сервер підтримує 2 команди:
add shares - додати папку до кореневого розшару
close server - закрити сервер при наступному конекті

Інтерфейс нульовий поки-що, за це не глуміться з мене. В найближчому часі планую додати конфіг-файл (xml) а також облік користувачів, закачок та іншої інфи за допомогою MySQL, а також веб-інтерфейс до бази данних. Планую налагодити це все для роботи також з нікс-подібними операційними ситемами.

І ще питання ламера: як і де можна вивісити 15kb коду?



Офлайн

#10 Фев. 23, 2008 07:22:04

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Отправка больших файлов в сети

DOMINUS
В мене готовий більш-менш стабільний код севера і клієнта. Зараз сервер може передавати клієнту файли і папки. Це все працює лише в мережі.
А протокол какой?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version