Я соглашаюсь с Jeremy на этом. Вы спрашиваете, необходимо ли создать новый контекст данных для каждого контроллера или на страницу - я склонен создавать новый для каждого независимого запроса.
я создаю решение в настоящее время, которое раньше реализовывало статический контекст как Вы, делают, и когда я бросил тонны запросов в звере сервера (миллион +) во время стресс-тестов, я также получал блокировки чтения-записи случайным образом.
, Как только я изменил свою стратегию использовать различный контекст данных на уровне LINQ на запрос и положил, что SQL-сервер мог работать свое волшебство организации пула подключений, блокировки, казалось, исчезли.
, Конечно, я находился под некоторой нехваткой времени, таким образом пробуя много вещей все в то же время, таким образом, я не могу быть на 100% уверен, именно это зафиксировал его, но у меня есть высокий уровень уверенности - давайте поместим его тот путь.
Вам необходимо вызвать QtCore .pyqtRemoveInputHook . Я заключил его в свою версию set_trace
:
def debug_trace():
'''Set a tracepoint in the Python debugger that works with Qt'''
from PyQt4.QtCore import pyqtRemoveInputHook
# Or for Qt5
#from PyQt5.QtCore import pyqtRemoveInputHook
from pdb import set_trace
pyqtRemoveInputHook()
set_trace()
И когда вы закончите отладку, вы можете вызвать QtCore.pyqtRestoreInputHook ()
, что, вероятно, лучше всего, когда вы все еще находитесь в pdb, а затем после того, как вы нажмете Enter, и консольный спам происходит, продолжайте нажимать 'c' (для продолжения), пока приложение не возобновит работу должным образом. (Мне по какой-то причине пришлось нажимать 'c' несколько раз, он продолжал возвращаться в pdb, но после нескольких нажатий он возобновлялся нормально)
Для получения дополнительной информации Google "pyqtRemoveInputHook pdb". (На самом деле очевидно, не так ли?; P)