相关文章推荐
坚强的骆驼  ·  matlab合并两个数组-掘金·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm trying to use pyspeedtest to get the upload/download speed of my connecting but I keep getting the following error which I couldn't resolve:

import pyspeedtest
st = pyspeedtest.SpeedTest()
st.download()
Exception: Cannot find a test server

Any suggestions/insights would be welcome!

It actually does work if you change the url in the pyspeedtest.py file from www.speedtest.net to c.speedtest.net on line 186 in v1.2.7 of the script.

Edit: added an example of how to get it to work

You can edit the pyspeedtest.py script (located at /usr/local/lib/python2.7/dist-packages/pyspeedtest.py on my raspberry pi 3) by using vi, e.g.:

sudo vi /usr/local/lib/python2.7/dist-packages/pyspeedtest.py

Go to line 186 and change the following line:

connection = self.connect('www.speedtest.net')
connection = self.connect('c.speedtest.net')

Then run pyspeedtest using the wrapper in /usr/local/bin:

/usr/local/bin/pyspeedtest
Using server: speedtest.wilkes.net
Ping: 41 ms
Download speed: 46.06 Mbps
Upload speed: 11.58 Mbps

Or use the python interpreter:

>>> import pyspeedtest
>>> st = pyspeedtest.SpeedTest()
>>> st.ping()
41.70024394989014
>>> st.download()
44821310.72337018
>>> st.upload()
14433296.732646577
                SpeedTest Object takes a host parameter, there is no need to change pyspeedtest package at all. st = pyspeedtest.SpeedTest(host="c.speedtest.net")
– thefern
                Feb 29, 2020 at 15:27

The project hasn't been updated since mid-2016. And the last update was updated user-agent to prevent SpeedTest block... And if you skim the code, there are [comments like this]:(https://github.com/fopina/pyspeedtest/blob/master/pyspeedtest.py#L188)

    # really contribute to speedtest.net OS statistics
    # maybe they won't block us again...

And there have been bugs posted to GitHub about the project not working, with no response.

So, my guess is: This project probably violates SpeedTest.net's terms of service, so they blocked it. The author tried to get around the block, they blocked it again, and the author gave up. In the intervening two years, any other servers it used as backups either blocked it, or shut down (e.g., speedtest.serv.pt, mentioned in the docs, no longer exists).

There is a pull request from another user that might fix it, although it appears to be failing the CI test. If you want to try it yourself, you can.

But otherwise, you can't use this library, and there's no way anyone can help you use it; it just doesn't work. You'll have to find another way to do the same thing.

What I have done to do my own tests with my own server:

To generate the network test file:

dd if=/dev/zero of=test-network 

nginx conf:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    location = /test_network {
        root /home/www/example.com;
           # serve file
    # redirect the rest to HTTPS conf block
    location / {
        return 301 https://example.com$request_uri;

Then restart nginx.

Now I get output with wget like:

wget -O /dev/null http://example.com/test_network
... 3,63MB/s ...
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.

 
推荐文章