मैं एसिंक्रोनस ड्राइवर मोटर के साथ, टॉरनाडो और मोंगोडब के साथ खेल रहा हूं। कॉलबैक के साथ काम करते समय सबकुछ ठीक है। तब मैं संभावना motor.Op या tornado.gen.Task उपयोग करने के लिए केवल एक ही समारोह में एक अनुरोध करने के लिए की खोज की: काम करकिसी अन्य फ़ंक्शन में डीबी अनुरोध (जो उपज का उपयोग करता है) कैसे स्थानांतरित करें?
तो यह है:
class Contact_handler(Main_handler):
@web.asynchronous
@gen.coroutine
def get(self, other_id):
event = events.Event_send_contact_request(self.user_id)
result = yield motor.Op(db.users.update,
{'_id': ObjectId(other_id)},
{'$push': {'evts': event.data}}
)
self.finish("ok")
लेकिन मैं इस डेटाबेस को ले जाना चाहते किसी अन्य मॉड्यूल में अपने स्वयं के फ़ंक्शन में अनुरोध करें। समस्या यह है कि मैं वास्तव में समझ नहीं पा रहा हूं कि उपज कैसे काम कर रही है (हालांकि मैं उपज के बारे में बहुत सारे प्रश्न पढ़ता हूं)। तो यह है कि मैं क्या करने की कोशिश की है, लेकिन यह काम नहीं कर रहा:
#------ file views.py -------------
class Contact_handler(Main_handler):
def get(self, other_id):
event = events.Event_send_contact_request(self.user_id)
result = model.push_event_to_user(other_id, event)
self.finish("ok")
और एक और समारोह में कॉल:
#------ file model.py -------------
@gen.coroutine
def push_event_to_user(user_id, event):
## Ajout de la demande dans les events du demandé:
yield motor.Op(db.users.update,
{'_id': ObjectId(user_id)},
{'$push': {'evts': event}}
)
मैं pdb साथ जांच हो:
(Pdb) l
157 event = events.Event_send_contact_request(self.user_id)
158 result = model.push_event_to_user(other_id, event)
159
160 import pdb; pdb.set_trace()
161
162 -> self.finish("ok")
163
(Pdb) result
<tornado.concurrent.TracebackFuture object at 0xa334b8c>
(Pdb) result.result()
*** Exception: DummyFuture does not support blocking for results
भी मदद की सराहना , धन्यवाद।