Есть ли способ обеспечить ограничение 30 секунд на локальном сервере приложений Appengine? - PullRequest
3 голосов
/ 13 июня 2010

Эй, мне было интересно, есть ли способ применить ограничение в 30 секунд, которое применяется онлайн на производственных серверах appengine для локального сервера разработки? Невозможно проверить, достигну ли я предела перед началом производства.

Может быть, какое-то промежуточное программное обеспечение Django?

Ответы [ 2 ]

1 голос
/ 13 июня 2010

Это возможно , как демонстрирует Алекс, но это не очень хорошая идея: характеристики производительности сервера разработки не совпадают с характеристиками производственной среды, поэтому то, что выполняется локально быстро, может не сработатьБыть почти таким же быстрым в производстве, и наоборот.

Кроме того, задачи, стоящие перед пользователем, определенно не должны быть такими медленными, чтобы приблизиться к 30-секундному пределу.

1 голос
/ 13 июня 2010

Вы можете написать (и вставить в стек WSGI) полезную часть промежуточного программного обеспечения WSGI , в котором используется threading.Timer , который регистрирует тот факт, что транзакция превысила 30 секунд (и, конечно, вызывает cancel для объекта таймера при выходе, поскольку в этом случае нечего регистрировать).

Я бы сделал это на уровне WSGI, а не на уровне Django, (а) потому что я более знаком с промежуточным программным обеспечением WSGI и (б) потому что это более общее решение (оно может помочь веб-приложению Django, но также может помочь веб-приложению, использующему любую другую инфраструктуру - использование WSGI гарантируется приложениемДвижок, какой бы фреймворк вы ни решили выложить поверх него).

Вам потребуется немного подправить «30 секунд» для калибровки, потому что, конечно, мощность, доступная память, скорость диска и т. Д.,вашей машины разработки, может не случиться так, чтобы она была точно такой же, как у Google, а также многие подсистемы (особенно хранилище) имеют очень разные реализации "локально в SDK" и "в Google".Все серверы "и в любом конкретном случае может оказаться значительно медленнее (или, возможно, быстрее! -).

Учитывая соображения, приведенные в предыдущем абзаце, на самом деле было бы более полезно иметь промежуточное программное обеспечение просто всегда регистрировать транзакцииобщее истекшее время - таким образом вы можете отслеживать транзакции, которые (хотя они могут завершаться в течение 30 секунд на вашем сервере разработки) занимают сопоставимое время (скажем, 15 или 20 секунд или более), особенно если у них несколько транзакций хранения, которые могут замедлятьсяих на реальных производственных серверах /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...