我有一个正常的 Django 站点正在运行。此外,还有另一个扭曲的过程,它监听 Jabber 存在通知并使用 Django 的 ORM 更新 Django DB。
到目前为止,我只是调用了相应的 Django 模型(在正确设置了设置环境之后)。然而,这会阻止 Twisted 应用程序,这不是我想要的。
由于我是新手,我不知道,最好的方法是使用延迟以非阻塞方式访问 Django DB(通过其 ORM)。
- 延迟生成器?
- twisted.enterprise.adbapi ?(绕过ORM?)
- ???
如果解析存在消息,我想在 Django DB 中保存具有 jid_str 的用户在线/离线(使用 Django 模型UserProfile
)。我用那个功能来做:
def django_useravailable(jid_str, user_available): try: userhost = jid.JID(jid_str).userhost() user = UserProfile.objects.get(im_jabber_name=userhost) user.im_jabber_online = user_available user.save() return jid_str, user_available except Exception, e: print e raise jid_str, user_available,e
目前,我调用它:
d = threads.deferToThread(django_useravailable, from_attr, user_available)
d.addCallback(self.success)
d.addErrback(self.failure)