我有一个正常的Django站点在运行。此外,还有另一个扭曲的进程,它侦听Jabber存在通知并使用Django的ORM更新Django DB。
到目前为止,它可以工作,因为我只调用了相应的Django模型(在正确设置了设置环境之后)。然而,这阻止了Twisted应用程序,这不是我想要的。
由于我刚接触到扭曲,我不知道最好的方式是使用延迟以非阻塞的方式访问Django DB (通过它的ORM)。
如果解析了存在消息,我想在Django DB中保存使用jid_str的用户是联机/脱机的(使用Django模型UserProfile)。我就是这样做的:
def django_useravailable(jid_str,user_available):try: userhost = jid.JID(jid_str).userhost() user = user_available user.im_jabber_online = user_available user.save()返回jid_str,user_available除了异常,e:打印e raise jid_str,user_available,e
目前,我引用它的理由如下:
d = threads.deferToThread(django_useravailable, from_attr, user_available)
d.addCallback(self.success)
d.addErrback(self.failure)发布于 2009-11-04 23:42:42
我已经成功地使用了您描述为当前方法的方法。通过读取文档,您会发现扭曲的DB使用隐藏下的线程,因为大多数SQL库都有一个阻塞API。
我有一个扭曲的服务器,它可以从现场的电源监视器中保存数据,它可以通过时不时地启动一个子线程并调用我的Django保存代码来做到这一点。您可以阅读更多关于我的实时数据收集管道的信息(这是一个博客链接)。
您是说您正在启动一个子线程,而该子线程仍处于阻塞状态?
https://stackoverflow.com/questions/1642392
复制相似问题