Python bottle を使用して WSGI アプリを作成しようとしています。ここで説明されているように、ボトルをインストールし、Apacheのmod_wsgiモジュールと一緒に実行します:http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide
やりたいことは、URL(リクエスト)に応じてJSONファイルを返すことです。なんとかできましたが、回避策がたくさんあるので正しい方法ではないと思います。私が言いたい のは、 1 JSON 変数を返すことができないということです。
RuntimeError: response has not been started
2 mod_wsgi では、呼び出し可能なオブジェクトに「アプリケーション」のような名前を付ける必要があり、2 つの引数を取ります。これは、ここで説明されているように、「@route」属性を使用できないことを意味します: http://webpython.codepoint.net/wsgi_application_interface
したがって、1では json.dumps メソッドを使用し、2ではルートを環境変数として使用しました。この場合の "@route" 属性の使用方法と Python ボトルのベスト プラクティスについて教えてください。これら 2 つの問題に対処する方法を以下に示します。
#!/usr/bin/python
import sys, os, time
import json
import MySQLdb
import bottle
import cgi
os.chdir( os.path.dirname( __file__ ) )
bottle.debug( True )
application = bottle.default_app( )
@bottle.route( '/wsgi/<parameter>' )
def application( environ, start_response ) :
# URL = bottle.request.method
URL = environ["PATH_INFO"]
status = '200 OK'
response_headers = [('Content-type', 'application/json')]
start_response( status, response_headers )
demo = { 'status':'online', 'servertime':time.time(), 'url':URL }
demo = json.dumps( demo )
return demo