मैं टोरनाडो के लिए RequestHandler में get_current_user को लागू करने का प्रयास कर रहा हूं, लेकिन मुझे अपने डेटाबेस में एसिंक्रोनस कॉल पर प्रतीक्षा करते समय ब्लॉक करने के लिए कॉल की आवश्यकता है। @ Tornado.web.asynchronous के साथ सजावट कॉल काम नहीं करेगा क्योंकि async क्वेरी पूर्ण होने से पहले get_current_user विधि वापस आती है और क्वेरी कॉलबैक निष्पादित किया जाता है।टोरनाडो असिंक्रोनस हैंडलर
उदाहरण के लिए:
class MyHandler(BaseHandler):
@tornado.web.asynchronous
@tornado.web.authenticated
def get(self):
self.write('example')
self.finish()
class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
def query_cb(self, doc):
return doc or None
database.get(username='test', password='t3st', callback=query_cb)
@ tornado.web.authenticated कॉल get_current_user, लेकिन हमेशा "कोई नहीं" प्राप्त करता है क्योंकि BaseHandler समय प्रतिक्रिया करने के लिए नहीं है। क्या उपरोक्त एक कॉल के लिए अस्थायी रूप से अवरुद्ध करने के लिए, बवंडर का उपयोग करके कोई रास्ता है?
मैं मूल रूप से पूछ रहा हूं कि बवंडर स्तर पर अवरुद्ध करने का कोई तरीका है क्योंकि कॉचडब के लिए मेरा डेटाबेस एपीआई असीमित है और इसमें कोई गैर-अवरुद्ध कॉल नहीं है। मैं इस एकल ऑपरेशन को छोड़कर बाकी साइट के लिए इसे पसंद करता हूं। यही कारण है कि मैं पूछ रहा हूँ। – Jarrod
एक समाधान: http://pastie.org/private/v6fwon5rryacjavna2o0w – Schildmeijer
दूसरा: http://code.google.com/p/couchdb-python/ – Schildmeijer