为什么OSM查询会导致在线Shiny应用程序崩溃(R语言)?

问题描述 投票:0回答:1

问题:我在 R 中有一个闪亮的应用程序,包括一个传单 OSM 映射,它在本地运行得很好,没有警告消息,但在线崩溃 - 并且日志文件输出没有什么帮助。

问题:如何解决Shiny应用上线崩溃的问题?

这是应用程序代码

# 0 Preparations ####
library(shiny)
library(shinymanager)
#library(shinyjs)
library(leaflet)
library(SUNGEO)
library(RJSONIO)
#library(reticulate)
    
ui <- fluidPage(
  
  # Here are the input variables:
  column(6,
         h4("Location"),
         div(id="location",
             textInput("place","Place",
                       value=NA,
                       placeholder="leave empty if NA"),
             actionButton("showmap","Show on map", class = "btn-primary")
         )
  ),
  
  # Here comes the map:
  column(6,
         div(id="map",
             leafletOutput("uk")))
)


server <- function(input, output, session) {
  
  # What the map should show in the beginning:
  output$uk <- renderLeaflet({
    leaflet() %>%
      addTiles() %>%
      fitBounds(-6, 60, 0, 50)
  })
  
  # What the map should show once we click on "Show on map":
  placeQuery <- eventReactive(input$showmap, {
      geocode_osm(input$place, user_agent = "[email protected]")
  }
  )
  
  observe({
    if (!is.null(placeQuery()$longitude) & ! is.null(placeQuery()$latitude)) {
      placeLng <- placeQuery()$longitude
      placeLat <- placeQuery()$latitude
      leafletProxy("uk") %>%
        clearMarkers() %>%
        addMarkers(lng=placeLng, lat=placeLat)
    }
  })
}

使用rsconnect::showLogs(appName="app-osm",streaming=TRUE)

日志文件
读取如下,shinyapps.io日志文件读取非常相似,但不显示最后一行:

2023-05-16T14:09:32.633727+00:00 shinyapps[9119732]: Running on host: b7e245a1bc93
2023-05-16T14:09:32.636159+00:00 shinyapps[9119732]: Running as user: uid=10001(shiny) gid=10001(shiny) groups=10001(shiny)
2023-05-16T14:09:32.636185+00:00 shinyapps[9119732]: Connect version: 2023.03.0
2023-05-16T14:09:32.636190+00:00 shinyapps[9119732]: LANG: C.UTF-8
2023-05-16T14:09:32.636194+00:00 shinyapps[9119732]: Working directory: /srv/connect/apps/app-osm
2023-05-16T14:09:32.636361+00:00 shinyapps[9119732]: Using R 4.1.3
2023-05-16T14:09:32.636376+00:00 shinyapps[9119732]: R.home(): /opt/R/4.1.3/lib/R
2023-05-16T14:09:32.636648+00:00 shinyapps[9119732]: Content will use current R environment
2023-05-16T14:09:32.636656+00:00 shinyapps[9119732]: R_LIBS: (unset)
2023-05-16T14:09:32.636663+00:00 shinyapps[9119732]: .libPaths(): /opt/R/4.1.3/lib/R/library
2023-05-16T14:09:32.643960+00:00 shinyapps[9119732]: shiny version: 1.7.4
2023-05-16T14:09:32.643980+00:00 shinyapps[9119732]: httpuv version: 1.6.11
2023-05-16T14:09:32.643984+00:00 shinyapps[9119732]: rmarkdown version: 2.21
2023-05-16T14:09:32.643995+00:00 shinyapps[9119732]: knitr version: 1.42
2023-05-16T14:09:32.644005+00:00 shinyapps[9119732]: jsonlite version: 1.8.4
2023-05-16T14:09:32.644010+00:00 shinyapps[9119732]: RJSONIO version: 1.3.1.8
2023-05-16T14:09:32.644015+00:00 shinyapps[9119732]: htmltools version: 0.5.5
2023-05-16T14:09:32.644042+00:00 shinyapps[9119732]: reticulate version: (none)
2023-05-16T14:09:32.644250+00:00 shinyapps[9119732]: Using pandoc: /opt/connect/ext/pandoc/2.16
2023-05-16T14:09:33.021968+00:00 shinyapps[9119732]: Starting R with process ID: '93'
2023-05-16T14:09:33.022354+00:00 shinyapps[9119732]: Shiny application starting ...
2023-05-16T14:09:39.997112+00:00 shinyapps[9119732]: Listening on http://127.0.0.1:34751
2023-05-16T14:09:46.470476+00:00 shinyapps[9119732]: Warning: Error in : lexical error: invalid char in json text.
2023-05-16T14:09:46.470520+00:00 shinyapps[9119732]:                                        <html> <head> <title>Access blo
2023-05-16T14:09:46.470526+00:00 shinyapps[9119732]:                      (right here) ------^
2023-05-16T14:09:46.483350+00:00 shinyapps[9119732]:   109: parse_string
2023-05-16T14:09:46.483386+00:00 shinyapps[9119732]:   108: parseJSON
2023-05-16T14:09:46.483394+00:00 shinyapps[9119732]:   107: parse_and_simplify
2023-05-16T14:09:46.483399+00:00 shinyapps[9119732]:   106: jsonlite::fromJSON
2023-05-16T14:09:46.483404+00:00 shinyapps[9119732]:   105: geocode_osm
2023-05-16T14:09:46.483409+00:00 shinyapps[9119732]:   104: eventReactiveValueFunc [/srv/connect/apps/app-osm/app.R#46]
2023-05-16T14:09:46.483427+00:00 shinyapps[9119732]:    60: townQuery
2023-05-16T14:09:46.483436+00:00 shinyapps[9119732]:    59: observe [/srv/connect/apps/app-osm/app.R#53]
2023-05-16T14:09:46.483440+00:00 shinyapps[9119732]:    58: <observer>
2023-05-16T14:09:46.483445+00:00 shinyapps[9119732]:    15: <Anonymous>
2023-05-16T14:09:46.483451+00:00 shinyapps[9119732]:    13: fn
2023-05-16T14:09:46.483454+00:00 shinyapps[9119732]:     8: retry
2023-05-16T14:09:46.483457+00:00 shinyapps[9119732]:     7: connect$retryingStartServer
2023-05-16T14:09:46.483460+00:00 shinyapps[9119732]:     6: eval
2023-05-16T14:09:46.483466+00:00 shinyapps[9119732]:     5: eval
2023-05-16T14:09:46.483470+00:00 shinyapps[9119732]:     4: eval
2023-05-16T14:09:46.483474+00:00 shinyapps[9119732]:     3: eval
2023-05-16T14:09:46.483476+00:00 shinyapps[9119732]:     2: eval.parent
2023-05-16T14:09:46.483480+00:00 shinyapps[9119732]:     1: local

应用程序已在线https://leakaftan.shinyapps.io/app-osm/(输入位置名称,然后单击“在地图上显示”)。 [更新:自从我找到解决方案(见下文)后,该应用程序现在运行顺利 - 至少应该如此。]

我已经尝试过

  • 删除此特定任务(但对于 Shiny 应用程序中包含的其他任务)不需要的所有包都无济于事。
  • 将库(RJSONIO)和库(网状)添加到脚本中,并按照herehere中.Rprofile文件的说明进行操作,因为日志文件表明没有在线加载,但无济于事。另外,我不认为任何代码实际上使用了 python,所以我很惊讶地发现 python 会成为这里的问题。
  • 在这个论坛和谷歌上额外搜索类似的问题,但没有找到任何看起来合适的解决方案。 这可能与:为什么我的 R Shiny 应用程序在浏览器中断开连接?但它也没有答案,并且我的日志文件表明没有与存储相关的问题。

由于从 RStudio 本地运行应用程序时没有警告消息,并且当单击本地版本中的按钮时,图钉实际上出现在右侧地图上,因此我不知道是什么导致该应用程序在线崩溃,而不是离线崩溃。

r shiny r-leaflet
1个回答
0
投票

通过shiny app提交查询时指定user_agent:

placeQuery <- eventReactive(input$showmap, {
      geocode_osm(input$place, user_agent = "[email protected]")
  }

此问题的解决方案与

Warning: Error in : lexical error: invalid char in json text
行有关,表明
geocode_osm
不会生成json文件,而是生成html文件,很可能表明访问已被拒绝。

另请参阅 有关 json 文件消息的 stackoverflow 帖子Nominatim 使用政策

© www.soinside.com 2019 - 2024. All rights reserved.