python – Flask App只返回404,无论它是如何运行的

我似乎无法让我的应用程序在uWsgi上正常运行.我通过从命令行运行uWsgiNginx从等式中取出,它表现出与在Nginx上运行时完全相同的行为.

uwsgi -s 0.0.0.0:5050 -w app:app --uid www-data --gid www-data --protocol=http

uwsgi按如下方式处理请求:

[pid:0625|app: 0|req: 1/1] 192.168.1.219 () {34 vars in 737 bytes} [Tue Mar 31 11:10:30 2015] GET /admin => generated 233 bytes in 25 msecs (HTTP/1.1 404) 3 headers in 249 bytes (1 switches on core 0)

我的文件结构如下

/srv/www/cc/app/
               static/
               templates/
               __init__.py
               views.py
               models.py
               forms.py

根据新的证据,它可能是我的应用程序,这是我的init.py文件

import os
from flask import Flask
from flask.ext.sqlalchemy import sqlAlchemy
from flask.ext.script import Manager
from flask.ext.migrate import Migrate,MigrateCommand

app = Flask(__name__)
app.config.from_object('config')

db = sqlAlchemy(app)
migrate = Migrate(app,db)

manager = Manager(app)
manager.add_command('db',MigrateCommand)

from flask.ext.mail import Mail
mail = Mail(app)

from app import models,forms

#setup flask-security
from flask.ext.security import Security,sqlAlchemyUserDatastore

user_datastore = sqlAlchemyUserDatastore(db,models.User,models.Role)
security = Security(app,user_datastore,confirm_register_form = forms.ExtendedConfirmRegisterForm
    )

from app import views

链接到我的整个views.py:http://pastebin.com/0jMTarEe

我有这个相同的应用程序,在开发早期的方式,在我有一个不同的Nginx uwsgi服务器上运行,并且已经完全复制了他们的配置文件,但无济于事.我真的不知道为什么这不起作用.但根据Flask文档,以上是我应该需要的.

对于咯咯笑声,我继续将uwsgi从等式中移除.在cc文件夹中创建了一个run.py文件… python run.py:

from app import app
app.run('0.0.0.0',port=5050,debug=True)

请求:

* Running on http://0.0.0.0:5050/
* Restarting with reloader
192.168.1.219 - - [31/Mar/2015 11:56:24] "GET / HTTP/1.1" 404 -

所以它似乎是我的应用程序的问题,而不是任何关于Nginx或uwsgi的问题.我在任何地方都没有收到任何错误……可能会出错?

编辑

通过评论中的建议进行了更多挖掘.我编辑了init.py的底部

import . import views

print views
print app.url_map

这是我启动服务器时的输出

* Running on http://0.0.0.0:5050/
* Restarting with reloader
<module 'app.views' from '/srv/www/cc/app/views.py'>
Map([<Rule '/' (HEAD,POST,OPTIONS,GET) -> index>,<Rule '/admin/' (HEAD,GET) -> admin>,<Rule '/test/' (HEAD,GET) -> test>
...
Lots more ... ])

解决方法

如果您设置SERVER_NAME配置值,则它必须与应用程序外部服务的主机和端口匹配.要么将其注释掉,要么使其与服务器的域或IP匹配.

app.config['SERVER_NAME'] = 'example.com:80'

运行dev服务器时,名称将是localhost:5000,虽然在这种情况下设置它通常是没有必要的.

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...