@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()
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Потому что в ходе присваивания в name() ты создаешь локальную переменную a, которая перекрывает глобальную.
Есть два решения:
1. Простое: вставить в начало name() строку global a, чтобы работать с глобальной переменной
2. Правильное: обернуть поток в класс, и работать с его экземплярной переменной вместо глобальной.

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

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

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект