python 创建随机数字列表以及固定增量

标签 python random python-requests

我有一个长时间运行(几个小时)的脚本,它定期向服务器发送查询。服务器对负载非常敏感,因此查询稀疏(每3分钟不超过1次)。

服务器总是花费 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

附注: 生成更精细的时间点可能有助于降低冲突的可能性(如评论中所述)。至于两个序列并集的随机性,我没有看到任何令人满意的解决方案。我最终决定做的是

check_result_sequence=query_sequence+10+( 5*random.random())

这会向响应序列添加随机“抖动”,因此有助于减少两个序列之间的相关性。

最佳答案

1)我几乎看不出有必要随机化请求之间的间隔

2)您可以创建一个列表:一个代表提交请求的可用时刻的列表

server_traffic=set([3,8,12,15,19,23,26,30,34,40])
for x in range(4):
    send_query(server_traffic)
while(True):
    send_result_request(server_traffic)
    send_query(server_traffic)

然后,每次您决定是否要使用自己的策略发送查询或检查结果时。这应该会让一切变得更容易

关于python 创建随机数字列表以及固定增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53669665/

相关文章:

twitter - requests.exceptions.ChunkedEncodingError : ('Connection broken: IncompleteRead(0 bytes read, 512 more expected)' , IncompleteRead

Python 请求仅提取一半的预期标签

python - Telegram bot API - 内联机器人在尝试回答内联查询时出现错误 400

python - OpenCV Python 中的变形操作

.net - 选择唯一的随机数

r - 如果用户没有设置,如何选择种子?

objective-c - 在 Objective-C 中选择 NSArray 的随机元素

python - 在numpy中合并多维数组

python - Pandas :获得假人

python - reshape Pandas df : rows of values to boolean matrix