Context
Чтобы протестировать веб-возможности пакета R, который я пишу, я пытаюсь обслуживать файл локально, используя пакет httpuv
, чтобы я мог запускать тесты с использованием автономной копии.страницы.
Проблема
Однако, curl
, похоже, не хочет хорошо играть с httpuv
- в частности, при попытке прочитать размещенный файл с помощью curl
(например, при curl::curl()
или curl::curl_fetch_memory()
) запрос зависает и, в конце концов, истекает время, если не прерывается вручную.
Минимальный пример
# Serve a small page
server <- httpuv::startServer("0.0.0.0", port = 9359, app = list(
call = function(req) {
list(
status = 200L,
headers = list("Content-Type" = "text/html"),
body = "Some content..."
)
}
))
# Attempt to retrieve content (this hangs)
page <- curl::curl_fetch_memory(url = "http://127.0.0.1:9359")
httpuv::stopServer(server)
Текущий прогресс
Как только сервер запущен, запуск curl -v 127.0.0.1:9359
в терминале возвращает содержимое, как и ожидалось.Кроме того, если я открываю новый экземпляр RStudio и пытаюсь curl::curl_fetch_memory()
в этом новом сеансе R (пока старый еще открыт), он работает отлично.
Воодушевленный этим, я игралнекоторое время с callr
, думая, что возможно запустить сервер в некотором фоновом процессе, а затем продолжить как обычно.К сожалению, до сих пор у меня не было никакого успеха с этим подходом.
Любое понимание или предложения очень ценятся!