Форум сайта python.su
shuhart50 метров, 10 метров, 5 метров ?
малые файлы портятся тоже
Офлайн
py.user.nextЭх… 5Мб - портится, 1Мб - портится, 7B (текстовый, 7 символов, UTF без BOM) - не портится, 1B (текстовый, 1 символ, UTF без BOM) - не портится.
50 метров, 10 метров, 5 метров ?
Надо определить минимальный, если он вообще есть.
Отредактировано shuhart (Сен. 16, 2015 12:56:19)
Офлайн
shuhartВот на таком и тестируй.
1Мб - портится
shuhartВынеси это из вызова. Причём open() тоже надо вынести.FileReader(open(source_file, 'rb'))
c = pycurl.Curl()
c.close()
shuhartНу, как минимум стало ясно, что эта информация неверна
Не понятно только, что это даст.
shuhartИ к тому же теперь для тестирования не надо грузить по гигабайту каждый раз, чтобы проверить, исправлена ли ошибка.
Привет всем!
Обнаружилась проблема в следующей задаче: загрузка файлов размером более 1Гб на ftp находясь за squid прокси. Файлы меньшего размера загружаются без проблем.
Отредактировано py.user.next (Сен. 16, 2015 13:02:07)
Офлайн
py.user.nextСогласен.
Ну, как минимум стало ясно, что эта информация неверна
Офлайн
А если убрать c.setopt(pycurl.HTTPPROXYTUNNEL, 1) какой результат?
Офлайн
PooHЭтот параметр обязателен при работе с http-прокси, которым и является squid. Без него pycurl работать со squid не сможет.
А если убрать c.setopt(pycurl.HTTPPROXYTUNNEL, 1) какой результат?
# -*- coding: utf-8 -*- import os, sys import pycurl ftp_user_name = "***" ftp_user_password = "***" proxy = "***" proxy_port = *** proxy_user_name = "***" proxy_user_password = "***" ftp_destination = "***" source_file = "***" if not os.path.exists(source_file): print("Error: the file '%s' does not exist" % source_file) raise SystemExit pycurl.global_init(pycurl.GLOBAL_WIN32) c = pycurl.Curl() c.setopt(c.URL, ftp_destination) c.setopt(c.PROXY, "%s:%s" % (proxy, proxy_port)) c.setopt(c.PROXYUSERPWD, "%s:%s" % (proxy_user_name, proxy_user_password)) c.setopt(c.HTTPPROXYTUNNEL, 1) c.setopt(c.UPLOAD, 1) c.setopt(c.USERPWD, "%s:%s" % (ftp_user_name, ftp_user_password)) c.setopt(c.VERBOSE, 0) c.setopt(c.NOPROGRESS, 0) with open(source_file, "rb") as file: c.setopt(c.READDATA, file) c.setopt(c.INFILESIZE, os.path.getsize(source_file)) print("Uploading file %s to url %s" % (source_file, ftp_destination)) try: c.perform() except Exception, err: print "Error: %s" % err c.close()
Отредактировано shuhart (Сен. 16, 2015 15:48:28)
Прикреплённый файлы:
diff02.PNG (3,4 KБ)
Офлайн
Исключи из скрипта прокси-сервер (закомментируй опции), оставив всё остальное, и проверь на том же или другом ftp-сервере с тем же файлом.
Отредактировано py.user.next (Сен. 17, 2015 02:47:17)
Офлайн
py.user.nextВсё это уже давно проверено. Сквозняком, без прокси, любой файл загружается корректно.
Исключи из скрипта прокси-сервер (закомментируй опции), оставив всё остальное, и проверь на том же или другом ftp-сервере с тем же файлом.
Офлайн
shuhart
. В каком режиме он работает? Почему так не может работать pycurl? Не задан какой-то параметр?
Офлайн
shuhartПроверил это? Я не могу полагаться на то, что ты говоришь, потому что ты в начале говорил одно, а там оказалось совсем другое.
Всё это уже давно проверено. Сквозняком, без прокси, любой файл загружается корректно.
Отредактировано py.user.next (Сен. 18, 2015 02:35:14)
Офлайн