【发布时间】:2017-04-29 23:40:38
【问题描述】:
我在 Heroku 上托管了一个 python 项目,它正在尝试执行以下操作:
- 创建 git 存储库
- 在 heroku 上启动
- 将测功机尺寸更改为爱好。
我一直在与 Heroku 平台 API 集成,结果发现第 3 步无法通过他们的 API 实现。 (见Change Dyno types through the Heroku API)
我尝试subprocess.call(['heroku', 'dyno:type', 'hobby']) 却发现heroku 命令在heroku 上不可用。 heroku run bash 证实了这一点。
因此,我考虑过直接下载 heroku 客户端,将其附加到我的 repo 并通过我的 python 网络服务器执行 heroku 客户端。
但是,我实际上不知道如何做到这一点。我的问题:
- 如何从我的网络服务器中导航到我的存储库路径?
- 有没有更好的方法来实现这一点?
编辑
对于那些仍然怀疑我是否在我的网络服务器上正确运行 heroku 的人:
@app.route("/<cloaker_id>")
def hello(cloaker_id):
subprocess.call(['heroku', 'apps'])
结果
2017-04-30T08:33:48.108374+00:00 app[web.1]: [2017-04-30 08:33:48,107] ERROR in app: Exception on /blah [GET]
2017-04-30T08:30:06.705906+00:00 app[web.1]: Traceback (most recent call last):
2017-04-30T08:30:06.705908+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
2017-04-30T08:30:06.705908+00:00 app[web.1]: response = self.full_dispatch_request()
2017-04-30T08:30:06.705909+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
2017-04-30T08:30:06.705910+00:00 app[web.1]: rv = self.handle_user_exception(e)
2017-04-30T08:30:06.705911+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
2017-04-30T08:30:06.705914+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2017-04-30T08:30:06.705915+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
2017-04-30T08:30:06.705916+00:00 app[web.1]: rv = self.dispatch_request()
2017-04-30T08:30:06.705916+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
2017-04-30T08:30:06.705917+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2017-04-30T08:30:06.705918+00:00 app[web.1]: File "/app/run.py", line 20, in hello
2017-04-30T08:30:06.705918+00:00 app[web.1]: subprocess.call(['heroku', 'apps'])
2017-04-30T08:30:06.705919+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/subprocess.py", line 168, in call
2017-04-30T08:30:06.705920+00:00 app[web.1]: return Popen(*popenargs, **kwargs).wait()
2017-04-30T08:30:06.705921+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/subprocess.py", line 390, in __init__
2017-04-30T08:30:06.705922+00:00 app[web.1]: errread, errwrite)
2017-04-30T08:30:06.705923+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/subprocess.py", line 1024, in _execute_child
2017-04-30T08:30:06.705923+00:00 app[web.1]: raise child_exception
2017-04-30T08:30:06.705924+00:00 app[web.1]: OSError: [Errno 2] No such file or directory
【问题讨论】:
-
heroku run bash确认了什么,是成功还是失败?你在哪里运行它和subprocess.call()? -
@NickT 子进程抱怨找不到
heroku进程。在 heroku run bash 中运行heroku也会抱怨找不到命令 -
我假设您说的是在 Heroku 实例上运行;它应该有 Heroku 代理吗?自己安装?
-
你试过更新你的heroku cli吗?