Size: a a a

2021 March 13

YC

Yury Chuker in Python Flask
И нагрузка не такая большая, что паралельных ситуации не возникало
источник

T

Tishka17 in Python Flask
Yury Chuker
Хм, возможно мы с таким не сталкивались, потому что стараемся делать максимально маленькие транзакции
Максимально маленькая транзакция - автокоммит.
источник

T

Tishka17 in Python Flask
Ну вот у нас тоже ребята не сталкивались. А потом столкнулись и пришлось объяснять
источник

YC

Yury Chuker in Python Flask
Tishka17
Максимально маленькая транзакция - автокоммит.
Если включить автокоммит, то сразу после session.add будет коммит делаться?
источник

T

Tishka17 in Python Flask
Не надо делать автокоммит. Это жопа
источник

YC

Yury Chuker in Python Flask
И тогда уже обрабатывать исключения надо на нём?
источник

T

Tishka17 in Python Flask
Автокоммит в 1.4 вообще депрекейтед
источник

YC

Yury Chuker in Python Flask
Просто варианты через with каждый раз делая новую транзакцию это прям много кода

А так очень удобно получается, ты через глобальный объект сессии управляешь всем, что надо
И как орм, так и кор подход
источник

T

Tishka17 in Python Flask
источник

YC

Yury Chuker in Python Flask
Ты пишешь, что на бефор реквест открываешь сессию
А если два параллельных запроса? Такая же проблема, разве нет?
источник

T

Tishka17 in Python Flask
from flask import Flask, g


class DbMiddleware:
   def __init__(self, sessionmaker):
       self.sessionmaker = sessionmaker

   def open(self):
       session = self.sessionmaker()
       g.session = session

   def close(self, *_args, **_kwargs):
       g.session.close()

   def register(self, app: Flask):
       app.before_request(self.open)
       app.teardown_appcontext(self.close)
источник

T

Tishka17 in Python Flask
Yury Chuker
Ты пишешь, что на бефор реквест открываешь сессию
А если два параллельных запроса? Такая же проблема, разве нет?
Так, g - тредлокал
источник

YC

Yury Chuker in Python Flask
А, и получается два объекта сессии хранят в себе независимые транзакции, понял.

Так стоп, а если у нас два треда отдельно, то сессия же тоже отдельно для треда, разве нет? 😅
источник

YC

Yury Chuker in Python Flask
Поэтому конфликта транзакции не должно быть
источник

АП

Агент Печенька... in Python Flask
Yury Chuker
А, и получается два объекта сессии хранят в себе независимые транзакции, понял.

Так стоп, а если у нас два треда отдельно, то сессия же тоже отдельно для треда, разве нет? 😅
Почему это? В твоём примере глобальная на все треды.
источник

YC

Yury Chuker in Python Flask
Хм, может быть, по памяти так, честно признаться, никогда не разбирался в мультипоточных приложениях.
Но для разных воркеров в гуникорне (читай процессов) оно-то точно разделено по памяти, так что эта проблема только в тредовых приложениях может быть
источник

VB

Vyacheslav Borisov in Python Flask
Как избавиться от этой ерунды? код в шаблоне стандартный {{url_for('static', filename='css/main.css'}}
источник

V

Vittore in Python Flask
Добрый вечер, подскажите пожалуйста  как переждать 503 ошибку и дождаться ответа от сервера?
источник

E

Enot in Python Flask
Vyacheslav Borisov
Как избавиться от этой ерунды? код в шаблоне стандартный {{url_for('static', filename='css/main.css'}}
Вот в джанге такого нет))))
источник

АЩ

Александр Щукин... in Python Flask
Vyacheslav Borisov
Как избавиться от этой ерунды? код в шаблоне стандартный {{url_for('static', filename='css/main.css'}}
Возможно бред и я так не пробовал, а если перед static написать?
источник