【问题标题】:How do I run python program on Rails with Heroku?如何使用 Heroku 在 Rails 上运行 python 程序?
【发布时间】:2017-01-10 12:10:48
【问题描述】:

Rails 在 Cloud9 上运行没有任何问题。 我想做的如下:

  1. 在 Heroku 上运行 Rails
  2. 在 Rails 中通过 rake 任务运行 python 程序(尤其是 python 用于通过 boto 访问 AWS s3 来获取一些。)

目前情况如下:

  1. 案例 1:将 rails 部署到 heroku 而不进行任何更改。 部署可能会成功,通过 Web 浏览器运行 rails 应用程序没有问题。但 Rails 服务器显示错误日志(通过 heroku log --tail )

错误显示“没有名为 boto 的模块”

  1. 案例 2:将 Rails 部署到根目录下名为 requirements.txt 的 Heroku 文件。 Heroku 没有将其检测为 Ruby Rails 应用程序,因此 rails 服务器没有运行。 rails 服务器显示错误日志(通过 heroku log --tail )为 heroku[router]: at=error code=H14 desc="No web processes running"

  2. 案例 3:首先部署 rails 与案例 1 相同。然后,​​在 Heroku 设置的 Buildpacks 上添加 Python,然后添加 requirements.txt,最后再次部署。然后它被部署。但 Rails 服务器显示错误日志(通过 heroku log --tail )与 Case3 相同。

如果我可以运行像 pip 这样的命令,那会很容易,但这是不可能的。 有没有办法解决以上问题?

【问题讨论】:

  • 部署一个 Rails 应用程序并使用 exec 调用 Python 脚本,例如 exec("python script.py params")
  • 即使使用你的想法,也是一样的。如果你的想法,因为没有模块,所以不可能使用 boto。
  • 使用import函数获取脚本中的模块docs.python.org/3/library/functions.html#__import__
  • 对不起,请理解后添加评论。

标签: python ruby-on-rails ruby heroku


【解决方案1】:

不要尝试在 Heroku 上安装自定义 boto,只需将自定义 boto 文件夹放在项目目录中(与项目应用程序处于同一级别)。此后,您可以使用 import 语句导入 boto 文件夹。您可以阅读有关导入模块here

虽然,理想的方法是使用 Rails SDK for AWS,而不是使用 Python SDK for AWS,然后尝试将它与 Rails 一起使用。 Boto 提供的所有功能也适用于 Ruby 开发工具包。

检查 http://docs.aws.amazon.com/sdk-for-ruby/v2/developer-guide/

【讨论】:

  • 我不打算在 Heroku 上安装我的自定义 boto。我只想使用普通的 Boto。您可以尝试使用 requirements.txt 将任何 Rails 应用程序部署到 Heroku 以安装模块。安装将成功,但 rails 应用程序无法运行。
  • 我的意思是,不要安装 boto,而是下载它并使其成为您的 repo 的一部分
猜你喜欢
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多