首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  程序员

Python 持续每秒对 API 服务器发送 2000 个 HTTP 请求的比较好的解决方案?

  •  
  •   whereabouts · 2018-09-29 09:11:52 +08:00 · 4115 次点击
    这是一个创建于 415 天前的主题,其中的信息可能已经有所发展或是发生改变。
    HTTP 的 Session 没什么要求。目标是一个 API 服务器,所以只有 1 个 IP。
    或者还是 Nodejs/Golang 实现起来更合适一点?
    22 回复  |  直到 2019-08-24 21:30:04 +08:00
        1
    zhengyongtao   2018-09-29 09:22:13 +08:00   ♥ 1
    用 tornado
        2
    lniwn   2018-09-29 09:23:24 +08:00 via Android   ♥ 1
    aiohttp clientsession, per_host_limit=2000,对于 1 秒这个问题,如果要求不是很严格,ayncio.sleep 即可。
        3
    iBaoger   2018-09-29 09:24:23 +08:00 via Android
    apache ab 不好用吗
        4
    whereabouts   2018-09-29 09:29:48 +08:00
    忘了说了,需求是可自定义 HTTP 请求的 Header、Cookie、Url 参数。 不过一般都能做到吧,主要是考虑下用哪个方案合适一点。
        5
    owenliang   2018-09-29 09:50:48 +08:00
    你会啥用啥呗。
        6
    Akikiki   2018-09-29 09:51:41 +08:00
    Locust
        7
    Qzier   2018-09-29 09:55:29 +08:00 via iPad
    有现成的工具为什么不用? nodejs 写的 loadtest,c 语言写的 wrk。
        8
    Kilerd   2018-09-29 10:12:56 +08:00   ♥ 1
    2000qps 先考虑一下数据库的优化吧,python 的极大框架都能撑起这个 qps。
    实在不行就用 docker,横向扩展做负载均衡
        9
    uwh0am1   2018-09-29 10:22:28 +08:00
    aio
        10
    crawl3r   2018-09-29 10:29:31 +08:00
    requests + gevent + 多进程
        11
    ltoddy   2018-09-29 10:51:58 +08:00
    asyncio + urlopen + concurrent.futures.ThreadExecutorPool
        12
    EINDEX   2018-09-29 14:07:41 +08:00
    aiohttp
        13
    my3157   2018-09-29 14:11:51 +08:00
    是压测么? 试试 tsung
        14
    gimp   2018-09-29 14:22:55 +08:00
    试试 wrk 呢
        15
    qq976739120   2018-09-29 14:26:54 +08:00
    ab
        16
    yc8332   2018-09-29 15:41:05 +08:00
    go 吧。2000 个 goroutine 又简单。
        17
    janxin   2018-09-29 16:03:27 +08:00
    https://locust.io/ 现成的框架提交个任务不就行了
        18
    Leigg   2018-09-29 19:10:53 +08:00 via iPhone
    go 一下很轻松
        19
    exiaohao   2018-09-29 19:20:40 +08:00
    自己撸代码就 requests + gevent, 闲得蛋疼用 celery 也可以啊
    楼上说的 Locust 也可以了解一下~
        20
    zhzer   2018-09-29 19:23:17 +08:00 via Android
    http 测试用 go 写很简单
        21
    luozic   2018-09-29 20:08:16 +08:00 via iPhone
    python 没你想的那么慢。 纯的 python,合理的代码搞这个无压力。并且 python 有部分 http 请求库底层是被用重写过的,担心个毛。
        22
    bantianys   85 天前
    Locust 是用 requests 库,加上只能用单个 CPU 核心。性能会比 wrk 差不少。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4166 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 03:19 · PVG 11:19 · LAX 19:19 · JFK 22:19
    ♥ Do have faith in what you're doing.