Переменная класса возвращается неверно? - PullRequest
0 голосов
/ 01 марта 2020

Я использую класс для общих переменных по flask маршрутам.

class Manager():
    def __init__(self):
        self.passwords = []
    def setRestock(self, password: str, copies: str):
        self.passwords.append(password)

Это часть кода моего класса. После того, как я установил значение self.passwords с несколькими паролями, оно выглядит примерно так:

['testpassword1', 'testpassword2', 'testpassword3']

Я создал маршрут, который возвращает значение self.passwords

@bp.route('/getPasswords', methods=['GET'])
def getPasswords():
    return jsonify({
        'status': 'ok',
        'data': manager.passwords
    }), 200

Ожидаемый результат должен быть:

{"data":['testpassword1', 'testpassword2', 'testpassword3'],"status":"ok"}

Когда я делаю запросы к этому маршруту, появляется ожидаемый результат, но после каждых 5-6 запросов он случайным образом возвращает {"data":[],"status":"ok"}. Затем повторный запрос возвращает правильную вещь.

Моя проблема в том, что self.passwords возвращается случайным образом как [], и это вызывает проблемы на странице HTML. Почему это происходит и как я могу это исправить?

1 Ответ

0 голосов
/ 01 марта 2020

Использование глобальной переменной для хранения состояния будет работать только при узких обстоятельствах.

Сервер разработки flask любит перезапускать себя, если обнаруживает изменения, что, вероятно, иногда вы видите []. Вы можете попробовать запустить с --no-reload, чтобы отключить это поведение.

Если вы работаете с прототипами и хотите автоматическую c перезагрузку, то вместо использования глобальных, попробуйте сохранить данные в файле, который вы прочитали ( и пиши) по требованию. Если вы беспокоитесь о производительности, попробуйте. Вы можете быть приятно удивлены.

...