我只想发送请求但不想浪费时间等待回复。因为回复对我来说毫无用处。
我抬头看了python doc,但是我找不到解决方案。
谢谢你的建议。
我试过用
urllib2.urlopen(url, timeout=0.02)
但我不确定该请求是否实际发出。
答案 0 :(得分:4)
这称为异步加载,这里是blog post explaining how to do it with urllib2。示例代码:
#!/usr/bin/env python
import urllib2
import threading
class MyHandler(urllib2.HTTPHandler):
def http_response(self, req, response):
print "url: %s" % (response.geturl(),)
print "info: %s" % (response.info(),)
for l in response:
print l
return response
o = urllib2.build_opener(MyHandler())
t = threading.Thread(target=o.open, args=('http://www.google.com/',))
t.start()
print "I'm asynchronous!"
这将加载URL而不等待响应。
答案 1 :(得分:0)
实现异步函数调用的最简单方法是在自己的线程或子进程中使用callable。
http://docs.python.org/library/threading.html#threading.Thread
http://docs.python.org/library/multiprocessing.html#multiprocessing.Process
似乎有用于Python的HTTP库已经实现了这样的功能,但是,例如grequests
或requests-futures
(两者都基于requests
库,这是一个改进在API方面超过urllib2
。