ошибка 18, попытка решить проблему с помощью ответа SO 1759956 - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь выполнить ошибка скручивания 18 - передача закрыта с оставшимися незавершенными данными чтения .

Главный ответ -

... пусть curl устанавливает длину самостоятельно.

Я не знаю, как это сделать. Я пробовал следующее:

curl --ignore-content-length http://corpus-db.org/api/author/Dickens,%20Charles/fulltext

Однако, я все еще получаю эту ошибку:

curl: (18) transfer closed with outstanding read data remaining

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Соединение только закрывается сервером через 30 секунд. Вы можете попытаться увеличить скорость клиента, но если сервер не доставляет достаточно в ограниченное время, вы получаете сообщение даже при быстром соединении.

В случае примера http://corpus -db.org / api / author / Dickens,% 20Charles / fulltext Я получил большее количество контента с прямым выводом:

curl http://corpus-db.org/api/author/Dickens,%20Charles/fulltext

при уменьшении объема записи в файл (уже ~ 47 МБ за 30 секунд):

curl -o Dickens,%20Charles http://corpus-db.org/api/author/Dickens,%20Charles/fulltext

Можно возобновить передачу файлов, но на примере сервера это не поддерживается:

curl -C - -o Dickens,%20Charles http://corpus-db.org/api/author/Dickens,%20Charles/fulltext

curl: (33) HTTP-сервер не поддерживает диапазоны байтов. Невозможно возобновить.

Так что могут быть варианты оптимизации запроса, увеличения скорости соединения или размера кэша, но если вы достигли предела и никогда не получите больше данных за ограниченное время, вы ничего не сможете сделать.

Руководство по cUrl можно найти здесь: https://curl.haxx.se/docs/manual.html

Следующие ссылки не помогут, но, возможно, интересны:
Хранилище для сервера данных можно найти здесь: https://github.com/JonathanReeve/corpus-db
Документацию по используемому веб-серверу можно найти здесь: https://hackage.haskell.org/package/warp-3.2.13

0 голосов
/ 27 марта 2019

Это проблема скорости. Сервер на corpus-db.org ОТКЛЮЧИТ ВАС, если вы загружаете что-то более 35 секунд, независимо от того, сколько вы уже загрузили.

Что еще хуже, сервер не поддерживает Content-Range , поэтому вы не можете загрузить его порциями и просто возобновить загрузку с того места, где остановились.

Что еще хуже, не только Content-Range не поддерживается, но и SILENTLY IGNORED , что означает, что он работает, пока вы на самом деле не проверите, что вы скачали.

Если вам нужно загрузить эту страницу с более медленного соединения, я рекомендую арендовать дешевый VPS и настроить его как зеркало того, что вам нужно скачать, и вместо этого загрузить с вашего зеркала. Ваше зеркало не обязательно должно иметь ограничение в 35 секунд.

Например, this vps 1 стоит $ 1,25 / месяц, имеет соединение 1 Гбит / с и сможет загрузить эту страницу. Возьмите напрокат один из них, установите на нем nginx, поместите его в папку www nginx и загрузите его с зеркала, и у вас будет 300 секунд на его загрузку (время ожидания по умолчанию для nginx) вместо 35 секунд. Если 300 секунд недостаточно, вы можете даже изменить время ожидания на любое другое.

Или вы даже можете придумать и настроить кеширующий прокси, совместимый с --proxy параметром curl, чтобы ваша команда могла стать

curl --proxy=http://yourserver http://corpus-db.org/api/author/Dickens,%20Charles/fulltext

Если кто-то заинтересован в реализации этого примера, сообщите мне.

Вы не можете загрузить эту страницу с подключением 4 Мбит, потому что сервер ударит вас до завершения загрузки (через 35 секунд), но если вы загрузите ее с подключением 1000 Мбит, вы сможете загрузить весь файл до истечения времени ожидания.

(У меня домашнее интернет-соединение 4mbit, и я не могу загрузить его из дома, но я попытался загрузить его с сервера с 1000-мегабитным соединением, и это прекрасно работает.)

1 PS: Я никоим образом не связан с ramnode, за исключением того, что я (предыдущий) счастливый клиент, и я рекомендую их всем, кто ищет дешевые надежные VPS.

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