我有一个Django应用程序。这将最终将一堆数据传递给Shiny应用程序。现在,显然没有“好”的方式在两者之间传输数据 - 所以我决定使用Django应用程序生成临时CSV文件。并从闪亮的应用程序中读取它。
Django代码看起来像:
csv_file = tempfile.NamedTemporaryFile()
# Write CSV to temporary file
csv_file.seek(0)
return redirect('/shiny?filename=' + csv_file.name())
Shiny代码看起来像:
server <- function(input, output, session) {
file_name <- session$clientData$filename
data <- read.csv(filename)
...
}
Shiny中的server
函数每个会话调用一次;也就是说,只有在重定向用户时才会打开此文件一次。据推测,关闭浏览器或任何其他此类操作将结束会话并关闭/删除文件。
现在,根据this帖子,return
块中的with
就像finally
一样。它是如何在with
块之外起作用的?
我是否过于依赖Django在重定向时关闭文件之间存在一些滞后时间,而Shiny打开文件?我真正想做的是避免手动删除文件。