I have some difficults to deploy my app with mod_wsgi.
- From:
- Eunjin Lee
- Date:
- 2010-05-22 @ 10:01
Hi, all.
I have some difficults to deploy my app with mod_wsgi.
When I wrote my app in a one file, It works on both Flask built-in server
and Apache mod_wsgi.
/blog.py
=============================================
#coding:utf-8
from flask import Flask
from flask import render_template, url_for, redirect
from flask import g
import sqlite3
DATABASE = '/home/hdformat/hdformat.sqlite'
app = Flask(__name__)
def connect_db():
return sqlite3.connect(DATABASE)
@app.before_request
def before_request():
g.db = connect_db()
@app.after_request
def after_request(response):
g.db.close()
return response
def query_db(query, args=(), one=False):
cur = g.db.execute(query, args)
rv = [dict((cur.description[idx][0], value) for idx, value in
enumerate(row)) for row in cur.fetchall()]
return (rv[0] if rv else None) if one else rv
@app.route('/')
def index():
entries = query_db('SELECT id, title FROM entries ORDER BY id DESC',
one=False)
return render_template('index.html', entries=entries)
app.run(host='0.0.0.0', debug=True)
But after split views into module, It works on only built-in server.
/runserver.py
=============================================
#coding:utf-8
from blog import app
app.run(host='0.0.0.0', debug=True)
/blog/__init__.by
=============================================
#coding:utf-8
from flask import Flask
from blog.views.home import home
app = Flask(__name__)
app.register_module(home)
/blog/views/home.py
=============================================
#coding:utf-8
from flask import Module
home = Module(__name__)
import sqlite3
from flask import g
DATABASE = '/home/hdformat/hdformat.sqlite'
def connect_db():
return sqlite3.connect(DATABASE)
@home.before_request
def before_request():
g.db = connect_db()
@home.after_request
def after_request(response):
g.db.close()
return response
def query_db(query, args=(), one=False):
cur = g.db.execute(query, args)
rv = [dict((cur.description[idx][0], value) for idx, value in
enumerate(row)) for row in cur.fetchall()]
return (rv[0] if rv else None) if one else rv
from flask import render_template, url_for, redirect
@home.route('/')
def index():
entries = query_db('SELECT id, title FROM entries ORDER BY id DESC',
one=False)
return render_template('index.html', entries=entries)
/blog.wsgi
=============================================
activate_this = '/home/hdformat/flask/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
import sys
sys.path.append("/home/hdformat/flask")
from runserver import app as application
On mod_wsgi, it remain logs like below
[Sat May 22 15:46:23 2010] [error] * Running on http://0.0.0.0:5000/
[Sat May 22 15:46:23 2010] [error] * Restarting with reloader...
/usr/bin/python: can't open file 'mod_wsgi': [Errno 2] No such file or
directory
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] mod_wsgi
(pid=18762): Target WSGI script '/home/hdformat/flask/blog.wsgi' cannot be
loaded as Python module.
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] mod_wsgi
(pid=18762): SystemExit exception raised by WSGI script
'/home/hdformat/flask/blog.wsgi' ignored.
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] Traceback
(most recent call last):
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] File
"/home/hdformat/flask/blog.wsgi", line 6, in <module>
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] from
runserver import app as application
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] File
"/home/hdformat/flask/runserver.py", line 3, in <module>
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**]
app.run(host='0.0.0.0', debug=True)
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] File
"/home/hdformat/flask/env/lib/python2.6/site-packages/Flask-0.5dev_20100512-py2.6.egg/flask.py",
line 772, in run
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] return
run_simple(host, port, self, **options)
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] File
"/home/hdformat/flask/env/lib/python2.6/site-packages/Werkzeug-0.6.2-py2.6.egg/werkzeug/serving.py",
line 531, in run_simple
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**]
run_with_reloader(inner, extra_files, reloader_interval)
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] File
"/home/hdformat/flask/env/lib/python2.6/site-packages/Werkzeug-0.6.2-py2.6.egg/werkzeug/serving.py",
line 454, in run_with_reloader
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**]
sys.exit(restart_with_reloader())
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] SystemExit: 2
[Sat May 22 15:46:23 2010] [error] [client 115.95.***.**] File does not
exist: /home/hdformat/public_html/favicon.ico
can you help me? :)
Regards,
EJ Lee
Re: [flask] I have some difficults to deploy my app with mod_wsgi.
- From:
- Armin Ronacher
- Date:
- 2010-05-23 @ 22:23
On 5/22/10 12:01 PM, Eunjin Lee wrote:
> Hi, all.
>
> I have some difficults to deploy my app with mod_wsgi.
>
> When I wrote my app in a one file, It works on both Flask built-in
> server and Apache mod_wsgi.
Remove the app.run() from the file or put it into an if __name__ ==
'__main__' section.
Regards,
Armin