librelist archives

« back to archive

I have some difficults to deploy my app with mod_wsgi.

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