【发布时间】:2010-12-11 04:10:07
【问题描述】:
我有一个正常的 Django 站点正在运行。此外,还有另一个扭曲的进程,它监听 Jabber 存在通知并使用 Django 的 ORM 更新 Django DB。
到目前为止,我只是调用了相应的 Django 模型(在正确设置设置环境之后)。但是,这会阻止 Twisted 应用程序,这不是我想要的。
由于我是新手,我不知道,最好的方法是使用延迟以非阻塞方式访问 Django DB(通过其 ORM)。
- deferredGenerator ?
- 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)
【问题讨论】:
-
请发布代码,尤其是“阻止”您的应用的部分。
标签: python django twisted deferred-execution