Size: a a a

2020 July 15

Ꮆㄖ尺ᗪ乂1 in Python Flask
чел, поверь мне щас спорить не хочется
источник

V

Vladi in Python Flask
Setplus Mac
подскажите, пожалуйста, насколько грамотно будет следующее:

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

АП

Агент Печенька... in Python Flask
Ꮆㄖ尺ᗪ乂1
да но сокет постоянно отправляет запрос
Щито.
источник

Ꮆㄖ尺ᗪ乂1 in Python Flask
Если ты прав, молодец
источник

АП

Агент Печенька... in Python Flask
Setplus Mac
подскажите, пожалуйста, насколько грамотно будет следующее:

чтобы использовать один и тот же экземпляр сессии в маршрутах, просто где-то создать его глобально и потом из этого места подтягивать?
Если ты про алхимию и глобальную сессию то это плохо.
источник

A

Alex in Python Flask
Ꮆㄖ尺ᗪ乂1
чел, поверь мне щас спорить не хочется
да, нести полную чушь с умным видом это тебе не аргументировать.
источник

A

Alex in Python Flask
Setplus Mac
подскажите, пожалуйста, насколько грамотно будет следующее:

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

SM

Setplus Mac in Python Flask
Агент Печенька
Если ты про алхимию и глобальную сессию то это плохо.
да-да-да! Вот как грамотно тогда сделать? Если, к примеру, пользователя зарегистрировать?

в /register:

session = Session()
   if form.validate_on_submit():
       user = User(username=form.username.data, email=form.email.data)
       user.set_password(form.password.data)
       session.add(user)
       session.commit()

потом после получения письма в /confirm/<token>:
   if current_user.confirm(token): —> и сама функция confirm(token):

       self.confirmed = True
       session = Session()
       session.add(self)
       session.close()

При таком коде мне выдаётся следующее:

sqlalchemy.exc.InvalidRequestError: Object '<User at 0x7f505aaa84c0>' is already attached to session '18' (this is '19')

Я так понимаю, надо просто объект сессии вести из /register до этой функции, но вот как это грамотно сделать?
источник

tn

tot samiy neizvestni... in Python Flask
Оо
источник

A

Alex in Python Flask
Setplus Mac
да-да-да! Вот как грамотно тогда сделать? Если, к примеру, пользователя зарегистрировать?

в /register:

session = Session()
   if form.validate_on_submit():
       user = User(username=form.username.data, email=form.email.data)
       user.set_password(form.password.data)
       session.add(user)
       session.commit()

потом после получения письма в /confirm/<token>:
   if current_user.confirm(token): —> и сама функция confirm(token):

       self.confirmed = True
       session = Session()
       session.add(self)
       session.close()

При таком коде мне выдаётся следующее:

sqlalchemy.exc.InvalidRequestError: Object '<User at 0x7f505aaa84c0>' is already attached to session '18' (this is '19')

Я так понимаю, надо просто объект сессии вести из /register до этой функции, но вот как это грамотно сделать?
ну вообще у тебя есть три варианта:

1. создавать и закрывать сессию алхимии в миддлвари до и после обработчика запроса и пробрасывть объект сессии в хендлер.
2. то же самое но со scoped_session в качестве тредлокал синглтона.
3. открывать и закрывать сессию явно в хендлере
источник

A

Alex in Python Flask
НИ В КОЕМ СЛУЧАЕ ты не должен переиспользовать сессию между обработчиками запросов.
источник

A

Alex in Python Flask
Да и казалось бы зачем это могло бы понадобиться.
источник

V

Vladi in Python Flask
Setplus Mac
да-да-да! Вот как грамотно тогда сделать? Если, к примеру, пользователя зарегистрировать?

в /register:

session = Session()
   if form.validate_on_submit():
       user = User(username=form.username.data, email=form.email.data)
       user.set_password(form.password.data)
       session.add(user)
       session.commit()

потом после получения письма в /confirm/<token>:
   if current_user.confirm(token): —> и сама функция confirm(token):

       self.confirmed = True
       session = Session()
       session.add(self)
       session.close()

При таком коде мне выдаётся следующее:

sqlalchemy.exc.InvalidRequestError: Object '<User at 0x7f505aaa84c0>' is already attached to session '18' (this is '19')

Я так понимаю, надо просто объект сессии вести из /register до этой функции, но вот как это грамотно сделать?
session.add(self)
надеюсь это не добавление юзера вновь в сессию
источник

A

Alex in Python Flask
        session = Session()
       session.add(self)
       session.close()

что это за говно?
источник

SM

Setplus Mac in Python Flask
Alex
        session = Session()
       session.add(self)
       session.close()

что это за говно?
собственно, в самом вопросе содержится ответ)
источник

V

Vladi in Python Flask
ага, ток не поясняется self это другой объект или юзер
источник

A

Alex in Python Flask
Setplus Mac
собственно, в самом вопросе содержится ответ)
ну ты добавляешь один и тот же объект к двум одновременно существующим сессиям. об этом прямо говорит текст ошибки
источник

A

Alex in Python Flask
непонятно только что за хрень у тебя в коде происходит и зачем так?
источник

V

Vladi in Python Flask
Alex
ну ты добавляешь один и тот же объект к двум одновременно существующим сессиям. об этом прямо говорит текст ошибки
+
источник

SM

Setplus Mac in Python Flask
да, я согласен(
источник