フラスコ拡張フラスコスクリプトを使用するときにグローバル変数を変更する方法がわかりません。私の問題を実証するために、私は以下の小さなフラスコアプリケーションを開発しました。これは、すべてのリクエストコールに対してグローバルカウンタ変数を増加させます。それに加えて、グローバルカウンタをリセットするリセット機能を提供しています:私はアドレス127.0.0.1:5000にアクセスすると、私は増加するカウンタを参照してくださいFlaskベースのPython Webアプリケーションでグローバル変数を外部から変更する
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from flask import Flask
from flask.ext.script import Manager
app = Flask(__name__)
app.debug = True
manager = Manager(app)
counter = 0
@manager.command
@app.route("/reset")
def reset():
global counter
print "Counter before reset:", counter
counter = 0
print "Counter after reset:", counter
return str(counter)
@app.route("/")
def add():
global counter
print "Counter before adding:", counter
counter +=1
print "Counter after adding:", counter
return str(counter)
if __name__ == "__main__":
manager.run()
私はpython counter.py runserver
を使用して、私のフラスコのアプリケーションを起動し
Counter before adding: 0
Counter after adding: 1
127.0.0.1 - - [17/Apr/2013 10:09:35] "GET/HTTP/1.1" 200 -
127.0.0.1 - - [17/Apr/2013 10:09:35] "GET /favicon.ico HTTP/1.1" 404 -
Counter before adding: 1
Counter after adding: 2
...
私はカウンターがあることがわかり127.0.0.1:5000/resetアドレスにアクセスすると
リセット
Counter before reset: 4
Counter after reset: 0
127.0.0.1 - - [17/Apr/2013 10:10:39] "GET /reset HTTP/1.1" 200 -
127.0.0.1 - - [17/Apr/2013 10:10:39] "GET /favicon.ico HTTP/1.1" 404 -
私はフラスコ-スクリプトの拡張子が提供する管理インターフェースを使用して、コマンドラインからのリセットメソッドを呼び出すしようとすると、
しかし、グローバルカウンタ変数はリセットされません。
> python counter.py reset
Counter before reset: 0
Counter after reset: 0
0
を私が間違っているのか?フラスコスクリプトを使用してグローバル変数にアクセスして操作するにはどうすればよいですか?
私の例を修正する簡単な方法はありません(DB、memcacheなし)。 – asmaier
いいえ、残念ながらそれはコンピュータの仕組みです –