У меня есть поток входящих ссылок, и я хочу время от времени проверять их на rss
. Но когда я запускаю свою функцию get_rss()
, она блокируется, и поток останавливается. Это не нужно, и я хотел бы просто запустить и забыть о функции get_rss()
(она хранит свои результаты в другом месте).
Мой код выглядит так:
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)
вообще не запускается. Что я делаю не так?