如何在其他函数中移动db请求(使用yield)?

如何在其他函数中移动db请求(使用yield)?,第1张

概述我正在玩龙卷风和mongodb,使用异步驱动电机.使用回调时一切都很好.然后我发现有可能使用motor.Op或tornado.gen.Task来仅在一个函数中执行请求:这是有效的:class Contact_handler(Main_handler): @web.asynchronous @gen.coroutine def get

我正在玩龙卷风和mongodb,使用异步驱动电机.
使用回调时一切都很好.然后我发现有可能使用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 [email protected] 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) l157             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.gen.Return的this post.我仍然需要在我的主函数中产生,但是协程很简单.

这是我现在的代码:

#------ file vIEws.py [email protected]@gen.coroutineclass Contact_handler(Main_handler):    def get(self,other_ID):        event = events.Event_send_contact_request(self.user_ID)        result = yIEld model.push_event_to_user(other_ID,event):    ## Ajout de la demande dans les events du demandé:    result = yIEld motor.Op(db.users.update,{'$push': {'evts': event}}                           )    raise gen.Return(result)
总结

以上是内存溢出为你收集整理的如何在其他函数中移动db请求(使用yield)?全部内容,希望文章能够帮你解决如何在其他函数中移动db请求(使用yield)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1205336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)