Работая с глобальным синглтоном во Flask (WSGI ), нужно ли мне беспокоиться о состоянии гонки?

Демонстрация hello world для Flask:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Что, если Я изменил это так:

from flask import Flask
app = Flask(__name__)

a = 1
b = 2
c = 3

@app.route("/")
def hello():
    a += 1
    b += a
    c += b
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Я понимаю, что приложение WSGI может иметь несколько потоков. Функция helloможет выполняться в нескольких потоках одновременно, и тогда возникнет состояние гонки. Это правильно? Если приведенный выше код не является потокобезопасным, что я могу сделать, чтобы сделать его потокобезопасным?

Избегание глобальных переменных — возможное решение, но всегда ли можно избегать глобальных? Что, если я хочу что-то вроде кеша объектов Python?

19
задан Buttons840 16 April 2012 в 21:10
поделиться