Tôi có một trang web Django bình thường đang chạy. Ngoài ra, có một quá trình xoắn, mà lắng nghe thông báo hiện diện Jabber và cập nhật DB Django bằng cách sử dụng ORM của Django.Làm thế nào để trì hoãn một hoạt động Django DB từ trong Twisted?
Cho đến giờ nó hoạt động như tôi chỉ gọi các mô hình Django tương ứng (sau khi đã thiết lập môi trường cài đặt chính xác). Điều này, tuy nhiên, khối các ứng dụng xoắn, mà không phải là những gì tôi muốn.
Vì tôi là người mới để xoắn Tôi không biết, cách tốt nhất sẽ là truy cập vào DB Django (thông qua ORM của nó) một cách không chặn bằng cách sử dụng hoãn.
- trì hoãnGenerator?
- twisted.enterprise.adbapi? (phá vỡ ORM?)
- ???
Nếu thông báo hiện diện được phân tích cú pháp Tôi muốn lưu trong DB Django mà người dùng có jid_str trực tuyến/ngoại tuyến (sử dụng mô hình Django UserProfile
). Tôi làm điều đó với chức năng:
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
Hiện nay, tôi gọi nó với: "Tôi có một trang web Django bình thường chạy"
d = threads.deferToThread(django_useravailable, from_attr, user_available)
d.addCallback(self.success)
d.addErrback(self.failure)
Vui lòng đăng mã, đặc biệt là phần "chặn" ứng dụng của bạn. – ohnoes