我正在构建一个使用远程数据库的应用程序 - 它将 A 类型的对象保存到数据库,并从数据库读取 B 类型的对象。
如saving models has the potential to block and release the GIL并且应用程序本身不使用保存的对象,我想将对 .save()
的调用移至单独的线程。
我知道Django一般不是线程安全的。所以我的问题是 - 当另一个线程保存 A 类型的对象时查询 B 类型的对象是否会出现任何问题?
最佳答案
这实际上并没有回答问题,但我认为你最好设置一个消息队列系统并使用另一个进程来处理消息。
不要保存,而是将新的/修改的对象放入本地存储(最好是 GAE 任务队列或 Amazon SQS 的服务,但任何类型的本地存储都可以)并在旁边处理它们。
但是,基本上,您正在实现数据库复制方案(即使使用线程,您的本地存储也是内存),因此您可能应该考虑实际使用全功能复制。
关于database - 用于保存 django 模型的单独线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736082/