在Heroku上使用Rails调用Python脚本进行各种操作是否是个好主意?

在Heroku上使用Rails但通过Python脚本进行各种操作(包括机器学习)的优缺点是什么?我喜欢Rails,但如果Django长期来看更好,我愿意切换到Django。

我希望通过将问题定位为“优缺点”,这更符合Stack Overflow的规范…如果不是这样,我很抱歉。不过我真的很希望得到帮助。


回答:

我喜欢Rails,但是…

你喜欢Rails的什么地方?Rails很棒,但它提供了Django没有的什么功能?在一个项目中使用多种语言是很常见的,多种语言会被编译成相同的代码。有像’rupy’这样的库可以简化这一过程,如果你比Django更熟悉Rails,那么考虑这种方法是有用例的。一般来说会有一些问题,主要问题是架构上什么是最好的选择。

关于可能的缺点,让我们尝试探索在构建现实世界示例时可能出现的任何问题:

def init_py_script  parsed_output = JSON.parse(`cat #{file.path} | python3 lib/some_python_script.py`)end

为什么作者选择这样做?在我们的模型中,假设他们将Python代码的工作外包了,因为他们不知道如何用Ruby完成这项任务。也许他们没有时间学习如何用Ruby做这件事,只能找到一个能完成这项工作的Python开发者。

这没问题,但这里有一些问题。[注意这些问题可能/可能不适用于你]:

  1. 用户需要在他们的服务器上安装不同的依赖项来运行两种语言,这需要时间来理解和调试。
  2. 如果外包的开发者将代码上传到另一个存储库;大多数部署脚本将无法部署子模块代码,需要手动干预。
  3. 在服务器上维护多种语言并不容易,当升级包时,可能会出现问题,比如需要安装多个’libssl-dev’包,这会增加更多的持续工作量。
  4. Ruby和Rails传统上由TDD驱动。如果你仅依赖单元测试,不会有问题。如果你喜欢加入集成测试,获得完整覆盖将更加困难。
  5. 在编写代码时,作者应该考虑到读者的需求,并减少未来读者和开发者理解应用程序功能的认知负担。如果你包含更多语言,将限制未来能够参与整个项目的开发者数量,因为他们需要理解两种语言。如果他们只在一个小组件上工作,这可能不是问题。

TLDR:对于小项目来说是可以的。使用多种语言会导致基础设施问题,可能在未来引起版本冲突。升级可能会更加困难。如果你有好的文档和测试,代码的开发应该不会受到影响。

Related Posts

神经网络反向传播代码不工作

我需要编写一个简单的由1个输出节点、1个包含3个节点的…

值错误:y 包含先前未见过的标签:

我使用了 决策树分类器,我想将我的 输入 作为 字符串…

使用不平衡数据集进行特征选择时遇到的问题

我正在使用不平衡数据集(54:38:7%)进行特征选择…

广义随机森林/因果森林在Python上的应用

我在寻找Python上的广义随机森林/因果森林算法,但…

如何用PyTorch仅用标量损失来训练神经网络?

假设我们有一个神经网络,我们希望它能根据输入预测三个值…

什么是RNN中间隐藏状态的良好用途?

我已经以三种不同的方式使用了RNN/LSTM: 多对多…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注