Доступ к локально обслуживаемым файлам в сеансе R - PullRequest
0 голосов
/ 05 декабря 2018

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, думая, что возможно запустить сервер в некотором фоновом процессе, а затем продолжить как обычно.К сожалению, до сих пор у меня не было никакого успеха с этим подходом.

Любое понимание или предложения очень ценятся!

...