2014-12-24 98 views
1

我一直坚持试图让我的简单bottle应用程序启动时部署在heroku上。与gunicorn - hero工作在heroku上的应用程序本地工作,但不heroku

经过相当多的搜索和修补后,我有一个本地工作的设置,但不是在heroku上。

/app.py

import bottle 
import beaker.middleware 
from bottle import route, redirect, post, run, request, hook, template, static_file, default_app 

bottle.debug(True) 
app = beaker.middleware.SessionMiddleware(bottle.app(), session_opts) 
... 
# app routes etc, no run() 

然后在/Procfile

web: gunicorn app:app --bind="0.0.0.0:$PORT" --debug 

纠正我,如果我误解是如何工作的gunicorn,我明白了 “应用:应用” 部分为外观的模块中(=文件)称为app.py并使用变量“app”中的任何内容作为WSIG,是的?

  • 如果$端口设置,我通过$ heroku run bash检查,似乎确定
  • 的“0.0.0.0” IP我已经从其他Heroku的例子有,应该反正接受任何IP地址的服务器端,不是吗?
  • Python的依赖关系似乎得到安装精细
  • 我有了这个由通过.env文件工头设置$POST变量本地运行,一切似乎都基于this SO question我检查$ heroku ps
  • 在我的设置
  • 工作确定

=== web (1X): `gunicorn app:app --bind="0.0.0.0:$PORT" --debug` web.1: crashed 2014/12/24 22:43:00 (~ 1m ago)*)

  • $ heroku logs显示:

2014-12-24T20:42:59.235657+00:00 heroku[web.1]: Starting process with command `gunicorn app:app --bind="0.0.0.0:23177" --debug` 2014-12-24T20:43:00.434570+00:00 heroku[web.1]: State changed from starting to up 2014-12-24T20:43:01.813679+00:00 heroku[web.1]: State changed from up to crashed 2014-12-24T20:43:01.803122+00:00 heroku[web.1]: Process exited with status 3

不知道我真的怎么能得到更好的调试结果无论是。不知何故,Procfile网络进程似乎并没有工作/开始,但我怎样才能获得关于破解的信息?

任何人都有想法这里发生了什么?

P.S:我是相当新的Heroku的,蟒蛇,瓶& gunicorn:O型

回答

1

你使用什么版本的gunicorn? gunicorn 19.1默认不写错误日志。尝试gunicorn --log-file=-

-R也是有用的选项来调查错误。

+0

谢谢,试过了,尽管我找不到'--log-file'选项,但也许'--access-logfile =“ - ”'也一样吗?结果仍然是一样的,本地作品,在heroku上的应用程序崩溃。 – kontur

+1

否 - 访问日志文件是accesslog。 --log文件是错误日志。 http://gunicorn-docs.readthedocs.org/en/latest/settings.html#errorlog – methane

+0

啊,这样做。有错误的痕迹,显然我有一个模块错误地(但本地)在.gitignore,这使得整个事情崩溃,并在heroku上烧伤。当我查看文档时,我也没有看到命令别名,所以谢谢指出:) – kontur

1

你可以尝试在你的Procfile只是web: gunicorn app:app没有别的?

+0

感谢您的建议。试过了,它不适用于heroku,但在本地。正如预期的那样,我可能会补充一点,因为根据我的理解,heroku动态地提供了应用程序应该监听的端口。 – kontur

+1

@kontur有趣的是,我目前在heroku上运行一个烧瓶应用程序,它只是在Procfile中运行... – cloudcrypt

+0

嗯,也许你的应用程序模块在启动时以某种方式检索端口号?感谢您的建议,但不幸的是,它似乎并没有解决这个问题。 – kontur

相关问题