Tôi không hiểu làm thế nào để thay đổi một biến toàn cầu khi sử dụng tập bình flask mở rộng bình. Để chứng minh vấn đề của tôi, tôi đã phát triển ứng dụng bình nhỏ sau đây, điều này sẽ làm tăng biến đếm toàn cầu cho mỗi cuộc gọi yêu cầu. Ngoài ra nó còn cung cấp một chức năng thiết lập lại để thiết lập lại các truy cập toàn cầu:Thay đổi biến toàn cầu từ bên ngoài trong ứng dụng web Python dựa trên Flask
# -*- 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()
tôi bắt đầu ứng dụng bình của tôi sử dụng python counter.py runserver
Khi tôi truy cập vào địa chỉ 127.0.0.1:5000 tôi thấy bộ đếm tăng
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
...
Khi tôi truy cập vào địa chỉ 127.0.0.1answer000/reset Tôi thấy rằng bộ đếm được đặt lại
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 -
Tuy nhiên khi tôi cố gắng gọi phương thức thiết lập lại từ dòng lệnh bằng cách sử dụng giao diện quản lý được cung cấp bởi phần mở rộng bình-kịch bản biến truy cập toàn cầu không được đặt lại:
> python counter.py reset
Counter before reset: 0
Counter after reset: 0
0
Tôi đang làm gì sai? Làm thế nào tôi có thể truy cập và thao tác một biến toàn cầu bằng cách sử dụng bình-script?
Vì vậy, không có cách nào dễ dàng (không có DB, memcache) để sửa ví dụ của tôi? – asmaier
Không, thật không may đó là cách máy tính hoạt động –