मेरे पास लिंक की एक स्ट्रीम आ रही है, और मैं उन्हें हर समय 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)
बिल्कुल चलाने के लिए प्रतीत नहीं होता। मैं क्या गलत कर रहा हूं?
सूत्रण अपने दोस्त – zenpoy
है लेकिन यह है कि एक सा ज्यादा हर, कहते हैं, दूसरा एक नया धागा शुरू करने के लिए नहीं है? – knutole
नहीं, यह नहीं है, लेकिन आपको इसकी आवश्यकता नहीं है, आप 3 धागे को फायर कर सकते हैं और एक सामान्य कतार के बावजूद उन्हें यूआरएल जमा कर सकते हैं। –