烧瓶和gunicorn,多个模块:循环进口 - 并非所有路线都可访问

时间:2014-04-07 19:21:09

标签: python heroku gunicorn

我的问题类似于Flask and Gunicorn on Heroku import errorProcfile gunicorn custom module name,但我似乎无法使用他们的解决方案来修复它。

My Flask应用程序具有以下结构:

appname/
   run.py
   Procfile
   venv/
       ...
   appname/
       app.py
       views.py

run.py:

from appname import app
app.run(debug=True)

app.py:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return "here"

Procfile:

web: gunicorn --pythonpath appname app:app

views.py:

from appname import app
from flask import render_template

@app.route('/there')
def there():
    return "there"

以前,我在运行foreman start时遇到了错误,但是当我从import appname.views移除app.py后,这些就消失了。

现在,foreman start运行应用,路由/可访问,但/there不可访问。怎么来的?

2 个答案:

答案 0 :(得分:3)

万岁!我已经能够使用我真正想要的代码了。

app结构(未更改):

appname/
   run.py
   Procfile
   venv/
       ...
   appname/
       app.py
       views.py

run.py(未更改):

from appname import app
app.run(debug=True)

<强> app.py:

from flask import Flask
app = Flask(__name__)

import appname.views
import appname.anothermodule

<强> Procfile:

web: gunicorn appname:app

views.py(未更改):

from appname import app

@app.route('/')
def home():
    return "Hello, awesomeness!"

答案 1 :(得分:1)

我已经能够通过以下方式“解决”这个问题:

  1. from appname import app
  2. 以外的其他地方没有run.py
  3. 因此,仅在app.py
  4. 中定义路线

    我宁愿用我的模块保留我的路线,虽然我不确定哪种是更好的Python风格。