【问题标题】:Send TCP messages at certain rate with Python使用 Python 以一定的速率发送 TCP 消息
【发布时间】:2013-11-05 18:26:18
【问题描述】:

我试图通过向服务器发送 TCP 消息来生成一些流量。 为此,我使用了一个 Python 脚本,它打开一个 TCP 套接字,然后通过它发送一些数据。收到回复后,TCP 连接关闭。

问题:我希望能够预定义脚本向服务器发送请求的速率,例如:每秒 5 条消息。但是,我不知道如何通过 Python 编写脚本:(。

任何人知道如何做到这一点(一个简短的例子就是超级!;)?

提前致谢。

注意:我可能需要添加一个额外的困难:由于服务器必须回复, 我想我必须让脚本异步工作......这样,我可以 无需等待上一个请求的回复即可发送请求...

【问题讨论】:

  • 一些有希望改进问题的问题:1) 每秒 5 条消息。你想一次发送所有 5 个(或接近它)然后每秒等待剩余的部分,还是你想间隔 200 毫秒发送它们 2)你是否需要担心 TCP 的东西(即,如果你发送消息,但实际上需要重试几次才能真正通过网络),您的脚本是否要添加额外的延迟? 3)它必须是python吗?我是 Python 的忠实粉丝,但根据您的用例,JMeter(基于 Java)之类的东西可能是更好的选择
  • 您好 Foon,已经感谢您的快速响应!更多信息:1)也许最简单的方法是将其间隔 200 毫秒? 2)我想知道这些延迟何时发生(也许我可以在脚本中构建它)。 3) JMeter 可能会有所帮助,但它比我自己构建脚本给我的控制更少;)。

标签: python asynchronous tcp load traffic


【解决方案1】:

您正在寻找的是token bucket algorithm 的实现。这类似于一个具有固定容量的桶,每个消费者在获得令牌之前无法执行操作,并且桶以固定速率重新填充。

算法很容易实现,但下面的链接有一个例子:

http://code.activestate.com/recipes/511490-implementation-of-the-token-bucket-algorithm/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-15
    • 2018-11-14
    • 2014-10-14
    • 2021-10-04
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多