我有一串链接进来,我想不时检查它们是否为rss
。但是,当我启动我的get_rss()
函数时,它会阻塞并且流停止。这是不必要的,我想刚刚发射后不管有关get_rss()
功能(在其他地方保存它的结果。)无需等待答案就可以关闭函数(Python)
我的代码是像这样的:
self.ff.get_rss(url) # not async
print 'im back!'
(...)
def get_rss(url):
page = urllib2.urlopen(url) # not async
soup = BeautifulSoup(page)
我在想,如果我可以开始并且忘记第一次调用,那么我甚至可以使用urllib2而不用担心它不是异步的。任何帮助深表感谢!
编辑: 试行GEVENT,但像这样的事情发生:
print 'go'
g = Greenlet.spawn(self.ff.do_url, url)
print g
print 'back'
# output:
go
<Greenlet at 0x7f760c0750f0: <bound method FeedFinder.do_url of <rss.FeedFinder object at 0x2415450>>(u'http://nyti.ms/SuVBCl')>
back
的Greenlet似乎要注册,但功能self.ff.do_url(url)
似乎并没有在所有运行。我究竟做错了什么?
线程是你的朋友 – zenpoy
但是,这不是有点多,开始一个新的线程每一个,比方说,第二次? – knutole
不,它不是,但你不需要,你可以触发3个线程并通过普通队列向他们提交URL。 –