Форум сайта python.su
DcDrИ с первым и со вторым пулом получается примерно то же самое по скорости. Для теста одной программой.
#pool = psycopg2.pool.ThreadedConnectionPool(5, 10, ‘host=127.0.0.1 user=test dbname=test password=test’)
pool = psycopg2.pool.PersistentConnectionPool(5, 10, ‘host=127.0.0.1 user=test dbname=test password=test’)
Офлайн
DcDrЕсли не очевидно, то: пул нужно создавать единожды, при запуске веб-приложения, а обращаться к пулу за коннектами - при отработке каждого веб-запроса.
Переделал на пулы.
Один запуск:{'create pool': '0.1290'}
{'connect 1': '0.0000', 'create pool': '0.1290'}
{'connect 2': '0.0000', 'connect 1': '0.0000', 'create pool': '0.1290'}
{'connect 3': '0.0000', 'connect 2': '0.0000', 'connect 1': '0.0000', 'create pool': '0.1290'}
Офлайн
если движок работает через wsgi/uwsgi/fcgi, то подключение можно сделать при запуске приложения, и для каждого клиента будет использоваться одно и то же подключение (в пределах процесса).
Отредактировано (Фев. 11, 2011 07:00:39)
Офлайн
o7412369815963Вы имеете ввиду, что будет на веб-сервере будет запущен ровно 1 процесс через WSGI и он будет отрабатывать одновременно не более 1 веб-запроса?
если движок работает через wsgi/uwsgi/fcgi, то подключение можно сделать при запуске приложения, и для каждого клиента будет использоваться одно и то же подключение (в пределах процесса).
Отредактировано (Фев. 11, 2011 08:57:50)
Офлайн
o7412369815963Спасибо за ответ. Уточните, пожалуйста, правильно ли я понимаю, что код, который выполняется до вызова application, выполняется при старте, а тот код, что внутри application, выполняется на каждый запрос. Следовательно, коннект лучше делать до выполнения application?
если движок работает через wsgi/uwsgi/fcgi, то подключение можно сделать при запуске приложения, и для каждого клиента будет использоваться одно и то же подключение (в пределах процесса).
Офлайн
ChuckВыполняется при страте, но всего 1 раз после перезагрузки веб-сервера.
Уточните, пожалуйста, правильно ли я понимаю, что код, который выполняется до вызова application, выполняется при старте
Офлайн
DcDrэто зависит от настроек wsgi, например у меня на одном из сайтов: 2 процесса по 15 потоков, итого 30 потоков = 30 одновременных веб обращения, на каждый процесс (при старте) создается подключение к БД. Разделение на процессы для того что-б потоки между собой не толкались gil-ом.o7412369815963Вы имеете ввиду, что будет на веб-сервере будет запущен ровно 1 процесс через WSGI и он будет отрабатывать одновременно не более 1 веб-запроса?
если движок работает через wsgi/uwsgi/fcgi, то подключение можно сделать при запуске приложения, и для каждого клиента будет использоваться одно и то же подключение (в пределах процесса).
Отредактировано (Март 12, 2011 16:06:09)
Офлайн
o7412369815963Странное объяснение, ведь треды то всё равно есть. Смысл разбиения на процессы в другом.
Разделение на процессы для того что-б потоки между собой не толкались gil-ом.
Офлайн
Александр Кошелевесли в пределах одного процесса, 1 поток повиснет в gil'e то остальные потоки будут тупо висеть и ждать его освобождения.o7412369815963Странное объяснение, ведь треды то всё равно есть. Смысл разбиения на процессы в другом.
Разделение на процессы для того что-б потоки между собой не толкались gil-ом.
if -1 in xrange(10**12): pass
Офлайн
Ммм. А более правдоподобный пример?
Офлайн