Python 用webscrapig对网站进行压力测试

Python 用webscrapig对网站进行压力测试,python,web-scraping,beautifulsoup,stress-testing,Python,Web Scraping,Beautifulsoup,Stress Testing,我的朋友用node.js写了一个网站,我想帮助他做压力测试,以防有一天它崩溃。我用beautifulsoup来测试它,结果很好 代码: 如果我想用python同时运行1000个代码,而不是一个接一个地运行1000次,那么还有其他方法来测试它吗?谢谢 您可以通过线程来完成。但我不建议创建1000个线程并同时运行它 import threading def testit(): l=randint(2008, 2018) first="year=%d" %l k=randint

我的朋友用node.js写了一个网站,我想帮助他做压力测试,以防有一天它崩溃。我用beautifulsoup来测试它,结果很好

代码:

如果我想用python同时运行1000个代码,而不是一个接一个地运行1000次,那么还有其他方法来测试它吗?谢谢

您可以通过线程来完成。但我不建议创建1000个线程并同时运行它

import threading
def testit():
    l=randint(2008, 2018)
    first="year=%d" %l
    k=randint(1600, 2400)
    second="cc=%d" %k
    url="http://xx.xxx.xxx.xxx:xxxx/outputData?{0}&{1}&submit=Submit".format(first,second)
    res = requests.get(url)
    soup=BeautifulSoup(res.text,'lxml')
    print(soup) 

threads = [threading.Thread(target=testit) for i in range(1000)] # Not recommend to use 1000 here

for t in thread:
    t.start()
你可以通过线程来实现。但我不建议创建1000个线程并同时运行它

import threading
def testit():
    l=randint(2008, 2018)
    first="year=%d" %l
    k=randint(1600, 2400)
    second="cc=%d" %k
    url="http://xx.xxx.xxx.xxx:xxxx/outputData?{0}&{1}&submit=Submit".format(first,second)
    res = requests.get(url)
    soup=BeautifulSoup(res.text,'lxml')
    print(soup) 

threads = [threading.Thread(target=testit) for i in range(1000)] # Not recommend to use 1000 here

for t in thread:
    t.start()
使用线程。打开n个线程,同时ping服务器。你可以调查

但是运行线程是一项CPU密集型任务,所以请确保保持n受控。给n赋予更高的值可能会给客户端带来压力。

使用线程。打开n个线程,同时ping服务器。你可以调查


但是运行线程是一项CPU密集型任务,所以请确保保持n受控。如果n的值较高,可能会给客户端带来压力。

如果您使用BeautifulSoup不必要地解析页面,那么在并行运行时,您将对您的计算机而不是服务器进行压力测试。在上面的代码中,为什么要在for循环的第二行中执行i=i+1?@R.yan我想以后可能需要使用它,但那条线不是necessary@KlausD. 你能提供更多的信息吗?我以前从未这样做过,所以我不明白你的意思。解析结果与检索结果相比是非常昂贵的,而且与测试服务器性能无关,因为它发生在客户端。您将在测试客户端上施加比服务器上更大的负载。如果您使用BeautifulSoup不必要地解析页面,那么在并行运行时,您将对计算机而不是服务器进行压力测试。在上面的代码中,为什么要在for循环的第二行中使用i=i+1?@R.yan我认为以后可能需要使用它,但那条线不是necessary@KlausD. 你能提供更多的信息吗?我以前从未这样做过,所以我不明白你的意思。解析结果与检索结果相比是非常昂贵的,而且与测试服务器性能无关,因为它发生在客户端。您将在测试客户机上施加比服务器上更大的负载。另外,根据经验,如果您想摆脱n并将其提升到下一个级别,那么您将在测试客户机上施加更大的负载。查看多处理设置多台机器,例如aws lambda。这更像是从n台不同的计算机ping服务器。因此,这两台计算机都没有压力,服务器上也有足够的负载。在这里,您可以生成足够多的实例,并且在每个实例中可以运行多个线程。把它带到下一个层次!!当我这么做的时候,我超过了数据库连接的总数,导致了宕机。另外,根据经验,如果您想摆脱n并将其提升到下一个级别。查看多处理设置多台机器,例如aws lambda。这更像是从n台不同的计算机ping服务器。因此,这两台计算机都没有压力,服务器上也有足够的负载。在这里,您可以生成足够多的实例,并且在每个实例中可以运行多个线程。把它带到下一个层次!!当我这样做时,我超过了数据库连接的总数,导致了停机。