Python和URLLIB2 - 请求网页但不等待响应

use*_*418 6 python urllib2

在python中,我将如何进行http请求而不是等待响应.我不关心获取任何数据,我只需要服务器来注册页面请求.

现在我用这个代码:

urllib2.urlopen("COOL WEBSITE")
Run Code Online (Sandbox Code Playgroud)

但显然这会暂停脚本,直到返回一个响应,我只想发出一个请求并继续前进.

我该怎么做?

Jam*_*lls 13

你想要的是线程异步.

线程:

  • 将呼叫包裹urllib2.urlopen()在a中threading.Thread()

例:

from threading import Thread

def open_website(url):
    return urllib2.urlopen(url)

Thread(target=open_website, args=["http://google.com"]).start()
Run Code Online (Sandbox Code Playgroud)

异步:

  • 不幸的是,在Python标准库中没有标准的方法.

使用具有此支持的请求库.

例:

from requests import async

async.get("http://google.com")
Run Code Online (Sandbox Code Playgroud)

还有第三个选项使用restclient库,它内置了(有一段时间)异步支持:

from restclient import GET

res = GET("http://google.com", async=True, resp=True)
Run Code Online (Sandbox Code Playgroud)

  • 为了将来的参考,已删除`requests.async`以支持[grequests](https://github.com/kennethreitz/grequests) (2认同)