ページ 11

pythonのwebアプリケーションでクラスオブジェクトを共有したい

Posted: 2015年6月22日(月) 08:05
by まーさ
pythonでwebアプリケーションを作成しているのですが、あるオブジェクトをメモリ上に保持して、すべてのリクエストから参照したいと考えています。

というのも、1GB程度ある大きなデータをファイルからロードして作成するオブジェクトのため、リクエストの度にロードすると時間がかかりすぎてしまうためです。

JavaのServletを使用していた際は、Servletの初期化時にオブジェクトを生成したり、初回リクエストの際に生成して2回目からはメモリに展開されたオブジェクトを参照していたのですが、pythonで同様な機能を実装するにはどのようにすれば良いのでしょうか。

どうぞよろしくお願い致します。

Re: pythonのwebアプリケーションでクラスオブジェクトを共有したい

Posted: 2015年6月22日(月) 21:49
by まーさ
自己解決しました。webフレームワークを利用すれば大変簡単に実現可能でした。例えばbottleというフレームワークを利用すると、以下のように初回アクセスで初期化が可能です。2回目からはAlready Make Objectが表示される。

コード:

from bottle import route, run
import sys
import os

# object
obj = None

@route('/api/json/:name')
def hello(name):
	global net
	if obj is None:
		obj = <オブジェクト作成>
	else:
		return '<h1>Alreadey Make Object!</h1>'

	return '<h1>Make Object! %s!</h1>' % name

run(host='localhost', port=8080, debug=True, reloader=True)