【问题标题】:Best Practise Coding for R script running in production [closed]在生产中运行的 R 脚本的最佳实践编码 [关闭]
【发布时间】:2016-04-28 16:04:59
【问题描述】:

我们有一个 linux 生产服务器和一些我们正在编写的脚本,我们希望在其上运行以收集数据,然后将这些数据放入 Spark 数据湖中。

我的背景是 SQL Server / Fortran,应该遵循非常具体的最佳实践

  • 生产环境在版本控制方面应该是稳定的,无论是从代码角度,还是安装的应用程序、操作系统等方面。
  • 对代码/应用程序/操作系统的更改应在单独的环境中进行,或者以一种受控且可以退出的方式进行。
  • 如果存在第二个环境,则可以执行并行执行以测试系统更改的可能性。
  • (很大程度上),开发人员被限制更改生产环境

在查看 R 代码时,我有很多问题。

  • library(), install.packages() - 我想排除每次运行脚本时安装更新版本包的可能性?
  • 如何最好地调用通过 CRON 作业调度的 R 包?这里有很多选择。
  • 在使用 RSelenium 时,使用 gui/Web 浏览器或虚拟化 Web 浏览器的最有效方法是什么?

【问题讨论】:

  • 您的 R 问题让我印象深刻,因为它仍然过于宽泛和模糊,无法轻易回答。如果这个问题可行,我认为您需要提供更具体的细节。
  • 最后三个要点是明显不同的问题。
  • 欢迎评论install.packages。 R 将使用可用的内容,或者如果丢失(除非您明确捕获它们),否则会产生错误,让您懊恼不已。
  • 有人可以帮我解决为什么投反对票吗?我想得到我的问题的答案,但如果我只是被否决就没有机会......
  • @Imo,很高兴分成 3 个问题

标签: r production-environment


【解决方案1】:

无论如何,我都会放弃任何自动更新软件包的概念。期望您依赖的包的维护者引入向后不兼容的更改。如果您自动更新,您的代码将突然停止工作。不要假设任何神圣的东西。

过去,您需要问自己部署了多少人手。如果您可以手动设置每个部署,那么您可能可以使用packrat 包来下拉并保留您正在使用的确切版本的源代码。这种方式复制你的部署是痛苦的,但至少是可能的。如果你想要完全自动化的可重复部署,我建议你开始用你的包构建 docker 镜像并用日期或版本标记它们。

如果您没有为重现您的环境做出任何规定,那么您就是在自找麻烦,虽然一开始似乎可以简单地修复任何不兼容的问题,因为它们提出了更新,并且确实似乎是来自权力的官方工作流程被误导,不管那是多么的错误;最终随着你的代码库的增长,这将是你最终要做的。

【讨论】:

  • 感谢您提供有用的回答,但除了上面的 cmets,我将删除此问题并创建三个希望通过严格检查的新问题,所以您能否添加此问题什么时候回答我的新问题?谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 2011-07-14
相关资源
最近更新 更多