У меня нормальный сайт Django работает. Кроме того, существует еще один скрученный процесс, который прослушивает уведомления о присутствии Jabber и обновляет Django DB с помощью ORM от Django.Как отложить операцию Django DB изнутри Twisted?
Пока это работает, поскольку я просто вызываю соответствующие модели Django (после правильной настройки среды настроек). Это, однако, блокирует приложение Twisted, чего я не хочу.
Поскольку я новичок в скручивании, я не знаю, каким лучшим способом было бы получить доступ к DB Django (через его ORM) неблокирующим способом с использованием отложенных событий.
- Отложенный генератор?
- twisted.enterprise.adbapi? (обход ORM?)
- ???
Если сообщение наличие разборе я хочу сохранить в Django БД, что пользователь с 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)
Пожалуйста, отправьте код, особенно часть, которая «блокирует» ваше приложение. – ohnoes