Что касается Chrome/77.0.3865.75 версия 2019 не работы. toString сразу вызывает без открытия Инспектора.
const resultEl = document.getElementById('result')
const detector = function () {}
detector.toString = function () {
resultEl.innerText = 'Triggered'
}
console.log('%c', detector)
<div id="result">Not detected</div>
Сеанс с заданной областью создает прокси-объект, который хранит реестр (по умолчанию) для каждого потока объектов сеанса, созданных по запросу из переданной фабрики сеанса. Когда вы обращаетесь к методу сеанса, например ScopedSession.add
, он находит сеанс, соответствующий текущему потоку, и возвращает метод add
, привязанный к этому сеансу. Активный сеанс можно удалить с помощью метода ScopedSession.remove ()
.
ScopedSession имеет несколько удобных методов, один из которых - query_property
, который создает свойство, которое возвращает привязку объекта запроса к сеансу с заданной областью, в котором он был создан, и классу, к которому был осуществлен доступ. Другой - ScopedSession. mapper
, который добавляет конструктор по умолчанию __ init __ (** kwargs)
и по умолчанию добавляет созданные объекты в сеанс с заданной областью, из которого был создан преобразователь. Этим поведением можно управлять с помощью аргумента ключевого слова save_on_init
преобразователя. ScopedSession.mapper
устарел именно из-за проблемы, о которой идет речь. Это тот случай, когда действительно применима философия Python «явное лучше, чем неявное». К сожалению, Elixir по-прежнему по умолчанию использует ScopedSession.mapper
.
ScopedSession.mapper
. Это тот случай, когда действительно применима философия Python «явное лучше, чем неявное». К сожалению, Elixir по-прежнему по умолчанию использует ScopedSession.mapper
. Оказывается, elixir устанавливает save-on-init = True для созданных мапперов. Это можно отключить:
using_mapper_options(save_on_init=False)
Это решает проблему. Престижность stepz на #sqlalchemy за то, что сразу понял, что происходит. Хотя мне все еще любопытно, как на самом деле работает scoped_session, поэтому, если кто-то ответит на это, он получит признание за ответ на вопрос.