@maryaTurova

Как получить переменную из процесса threading в запросе flask?

Вообщем вопрос!
Если глобальная переменная меняется в отдельном потоке, то как её получить через flask?
from flask import Flask
from threading import Thread
import time
import random

a='test'

def name():
    while True:
        time.sleep(1)
        letters = 'test'
        a=''.join(random.choice(letters) for i in range(len(letters)))

th = Thread(target=name)
th.start()

app = Flask(__name__)
@app.route("/")
def hello():
    return a
if __name__ == "__main__":
    app.run()
  • Вопрос задан
  • 33 просмотра
Решения вопроса 1
@Vindicar
Потому что в ходе присваивания в name() ты создаешь локальную переменную a, которая перекрывает глобальную.
Есть два решения:
1. Простое: вставить в начало name() строку global a, чтобы работать с глобальной переменной
2. Правильное: обернуть поток в класс, и работать с его экземплярной переменной вместо глобальной.

К слову, при запуске потока добавь daemon=True, иначе твой поток не даст завершить работу сервера (он же while True).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы