У меня есть длительный (несколько часов) скрипт, который периодически отправляет запросы на сервер.Сервер очень чувствителен к нагрузке, поэтому запросы редки (не чаще 1 раза в 3 минуты).
Серверу всегда будет требоваться ровно 10 минут для обработки запроса.Поэтому я могу проверить результат запроса 1 в любое время после 10 минут его отправки.
Таким образом, существует два типа операций: «отправка запроса» и «проверка результата запроса».Я хочу, чтобы все операции выполнялись через произвольные интервалы (при условии ограничения, что между смежными операциями должно быть не менее 3 минут)
Следуя рекомендациям в этом ответе (https://stackoverflow.com/a/51918697/10690958), я могу сгенерировать время-серия целых чисел так, чтобы между ними был зазор не менее 3. Пусть все будут сериями 1.
Я также могу сгенерировать аналогичные временные ряды запросов проверки статуса (3 минуты между ними).назовите эту серию 2.
Теперь ряды 1 случайно расположены. Ряды 2 также случайно расположены, но есть корреляция между рядами 1 и 2, то есть «время ответа» = «время запроса» +10 минут.
Это объединение рядов 1 и 2. не будет случайным, кроме того, существует (очень малая) вероятность столкновения. Например, запрос 2 может выполняться именно тогда, когда проверяется результат запроса 1.
Есть ли способ сделать объединение двух последовательностей также совершенно случайным, а также избежать возможности столкновений. В идеале весь трафик длясервер (будь то запрос или проверка состояния) должен быть с совершенно случайными интервалами.
Я понимаю, что заголовок не очень описательный, но не смог придумать лучший способ описать ситуацию.Пожалуйста, измените, если вы считаете, что у вас есть лучшее описание.
Например:
query_sequence=set([3,8,12,21,37])
check_result_sequence=set([13,18,22,31,47])
server_traffic=query_sequence.union(check_result_sequence)
Но их объединение (server_traffic) не случайно, так как
check_result_sequence=query_sequence+10
PS: Генерация временных точек с большей степенью детализации может помочь уменьшить вероятность столкновений (как указано в комментарии).Что касается случайности объединения двух последовательностей, я не вижу удовлетворительного решения.В конце концов я решил сделать
check_result_sequence=query_sequence+10+( 5*random.random())
. Это добавляет случайный «джиттер» к последовательности ответов, что должно помочь уменьшить корреляцию между двумя последовательностями.