shuhart50 метров, 10 метров, 5 метров ?
малые файлы портятся тоже
Надо определить минимальный, если он вообще есть.
shuhart50 метров, 10 метров, 5 метров ?
малые файлы портятся тоже
py.user.nextЭх… 5Мб - портится, 1Мб - портится, 7B (текстовый, 7 символов, UTF без BOM) - не портится, 1B (текстовый, 1 символ, UTF без BOM) - не портится.
50 метров, 10 метров, 5 метров ?
Надо определить минимальный, если он вообще есть.
shuhartВот на таком и тестируй.
1Мб - портится
shuhartВынеси это из вызова. Причём open() тоже надо вынести.FileReader(open(source_file, 'rb'))
c = pycurl.Curl()
c.close()
shuhartНу, как минимум стало ясно, что эта информация неверна
Не понятно только, что это даст.
shuhartИ к тому же теперь для тестирования не надо грузить по гигабайту каждый раз, чтобы проверить, исправлена ли ошибка.
Привет всем!
Обнаружилась проблема в следующей задаче: загрузка файлов размером более 1Гб на ftp находясь за squid прокси. Файлы меньшего размера загружаются без проблем.
py.user.nextСогласен.
Ну, как минимум стало ясно, что эта информация неверна
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()
py.user.nextВсё это уже давно проверено. Сквозняком, без прокси, любой файл загружается корректно.
Исключи из скрипта прокси-сервер (закомментируй опции), оставив всё остальное, и проверь на том же или другом ftp-сервере с тем же файлом.
shuhart
. В каком режиме он работает? Почему так не может работать pycurl? Не задан какой-то параметр?
shuhartПроверил это? Я не могу полагаться на то, что ты говоришь, потому что ты в начале говорил одно, а там оказалось совсем другое.
Всё это уже давно проверено. Сквозняком, без прокси, любой файл загружается корректно.