Экспоненциальное отключение: time.sleep с random.randint (0, 1000) / 1000

Во многих образцах кода google api я видел эту строку кода.

time.sleep((2 ** n) + (random.randint(0, 1000) / 1000)) 

random.randint(0, 1000) / 1000 всегда возвращают случайные миллисекунды.

Каково использование этих случайных миллисекунд?

2 Solutions collect form web for “Экспоненциальное отключение: time.sleep с random.randint (0, 1000) / 1000”

Причина объясняется документацией API :

В приведенном выше потоке random_number_milliseconds представляет собой случайное число миллисекунд, меньшее или равное 1000. Это необходимо, чтобы избежать некоторых ошибок блокировки в некоторых параллельных реализациях. Значение random_number_milliseconds должно быть переопределено после каждого ожидания.

Это распространенный метод «путать» время доступа API, чтобы избежать перекоса, вызванного падением в повторяющиеся шаблоны сбора и освобождения блокировки ресурсов.

Имея немного случайности в таких ситуациях, это хорошо. Например, если у вас есть большое количество клиентов, поражающих один и тот же сервер, использование их с использованием одного и того же детерминированного отказа может привести к тому, что они поражают сервер в совершенном блокировке, что нежелательно.

  • Как писать большие файлы в Blobstore с помощью экспериментального API?
  • Может ли Pandas работать в Google App Engine для Python?
  • Как «мин» двух целых чисел так же быстро, как «бит-хакинг»?
  • Appengine - возможно ли получить сущность, использующую только ключевую строку без имени модели?
  • ValueError: невозможно скопировать последовательность на ось массива в Python для анимации MatplotLib
  • Метод python dunder для `is`
  • Установите значение в dict, только если значение еще не установлено
  • Как использовать модуль webbrowser открыть веб-сайт, но на фоне python 3?
  • Разница между классом foo и классом foo (object) в Python
  • Накопитель Google App Engine: работа с возможной согласованностью
  • __init __ () принимает ровно 2 аргумента (1 задано)?
  •  
    Interesting Posts for Van-Lav

    Buildout и Virtualenv

    asyncio.ensure_future vs. BaseEventLoop.create_task против простой сопрограммы?

    Питонический способ обнаружения выбросов в одномерных данных наблюдения

    Написание простой функции, использующей while

    Перезаписать глобальный var в одной строке в Python?

    Какие стратегии существуют для обеспечения всех операций, связанных с локалью, правильно обрабатываются во всех локалях?

    быстрый способ найти наименьший положительный истинный корень четвертичного многочлена 4 степени в питоне

    Вызовите файл Python в программе SML?

    Является ли хорошей идеей для меня изучать Python до C или другого языка компилятора?

    скачать файл с qwebkit at pyqt

    Как получить значение StringProperty в Python для Google App Engine?

    ArtistAnimation vs FuncAnimation matplotlib анимация matplotlib.animation

    Как запустить оболочку в отдельном процессе и получить автоматическое завершение? (Python)

    Использование DPAPI с Python?

    Ошибка загрузки DLL:% 1 не является допустимым приложением win32

    Python - лучший язык программирования в мире.