database - 用于保存 django 模型的单独线程

标签 database django postgresql thread-safety gil

我正在构建一个使用远程数据库的应用程序 - 它将 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/

相关文章:

Java新手: JPA and EJB workflow question

python - 错误 : The program 'django-admin' is currently not installed

php - 安全高效的文件 uploader

django - 在 wagtailadmin 中的 limit_choices_to 中使用或 Q() 对象

ruby - 后续迁移。我的迁移文件中的 IP 地址应该是什么?

sql-server - 在触发器内执行动态sql "alter database"

database - 哪种 Erlang 数据结构可用于有序集并且可以进行查找?

sql - 在 group by 子句中连接数组

linux - 将 postgres 从 windows 重定向到 linux

sql - 从命令 shell 处理 COPY 中的引号到 CSV