Как вы можете ограничить допустимое время выполнения определенных методов в Python-версии Google App Engine? - PullRequest
4 голосов
/ 01 февраля 2011

Поскольку модуль сигналов не поддерживается в Python-версии Google App Engine, какой самый простой способ вызвать метод и вызвать / перехватить исключение, если метод не возвращает менее чем за 2 секунды?

Ответы [ 2 ]

5 голосов
/ 01 февраля 2011

Если вы говорите о вызовах RPC, таких как хранилище данных, вы можете создать RPC с крайним сроком (см. create_rpc), передать RPC в функцию хранилища данных ( db.получить , db.put и т. д.), затем перехватить DeadlineExceededErrors.

# Set a five-second timeout
rpc = db.create_rpc(deadline=5)

# A query:
query = YourModel.all().fetch(100, rpc=rpc)

URLFetch fetch функция также принимает параметр крайнего срока.

Для вашего собственного кода, который вы могли бы реализовать, проверяя себя, см. Модуль time .

0 голосов
/ 01 февраля 2011

В циклах вы можете сохранить время начала цикла и проверить, как долго он продолжается на каждой итерации.

Если вы не в цикле, все немного сложнее. Вы можете добавить бит проверки времени каждые несколько строк кода. Это, конечно, делает действительно уродливый код, но без возможности порождать потоки, которые могут запускать таймер в фоновом режиме и прерывать работающий код, нет большого пути обойти это.

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