1

私はボトルを使用して小さな Web プログラムを作成し、次のソース ファイルに名前を付けていますindex.py。プログラムでは beaker セッション ライブラリも使用しています。すべてを使用してコードを実行すると、python index.pyすべてがうまくいきます。しかし、使用すると、ビーカーキーが存在しないgunicorn -c gunicorn.conf index:appというこのようなエラーメッセージが表示されます。beaker.sessiongunicorn サーバーで再び機能するようにコードを変更するにはどうすればよいですか?

Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/bottle-0.12.7-py2.7.egg/EGG-INFO/scripts/bottle.py", line 857, in _handle
    self.trigger_hook('before_request')
  File "/Library/Python/2.7/site-packages/bottle-0.12.7-py2.7.egg/EGG-INFO/scripts/bottle.py", line 640, in trigger_hook
    return [hook(*args, **kwargs) for hook in self._hooks[__name][:]]
  File "/Users/yizeng/Documents/python_projects/simple-courses/index.py", line 17, in setup_request
    request.session = request.environ['beaker.session']
KeyError: 'beaker.session'

のソースコードindex.py:

import os, sys, bottle
from bottle import debug, route, request, run, Bottle, static_file, hook
from apps import model, views
from beaker.middleware import SessionMiddleware


app = bottle.app()

session_options = {
        'session.type': 'file',
        'session.cookie_expires': 300,
        'session.data_dir': './data',
        'session.auto': True
    }
@hook('before_request')
def setup_request():
    request.session = request.environ['beaker.session']

@app.route('/assets/<filepath:path>')
def server_static(filepath):
    return static_file(filepath, root='assets')

@app.route('/test')
def test():
    s = request.environ.get('beaker.session')
    s['test'] = s.get('test', 0) + 1
    s.save()
    return 'Test counter: %d' % s['test']

app_session = SessionMiddleware(app, session_options)
if __name__ == '__main__':
    app.run(app=app_session)
4

1 に答える 1

0

最後のブロックはまったく必要ないと思いますif __name...インデックスモジュールのアプリ「varibale」を WSIG として実行する Gunicorn は、ボトル アプリのインスタンスをスピンアップする必要があることを意味します。

于 2014-12-25T20:00:33.200 に答える