django - 如何处理 Django-PostgreSQL 锁

标签 django postgresql locking celery

我在使用 postgresql 后端的 Django 项目时遇到问题。

我知道在“网络交易”中有一些 Unresolved 问题。每次我进行选择时,都会在 postgresql 中创建一个新锁。该锁在网络交互(请求 - 处理 - 响应)中很好

这似乎是一个问题,我在 celery 集成方面遇到了一些麻烦。我有一些任务执行时间太长,它们如下所示:

l1. instances = mymodels.MyModel.objects.all()
l2. for instance in instances:
l3.     do something with that instance (not update, just performing 
l4.     some operations from instance fields)

只有在该任务结束时才会释放锁。有没有什么办法可以在“l1”之后释放生成的锁?

我的 postgres 锁定表的输出

SELECT locktype, relation::regclass, mode, transactionid AS tid,
virtualtransaction AS vtid, pid, granted
FROM pg_catalog.pg_locks l LEFT JOIN pg_catalog.pg_database db
ON db.oid = l.database WHERE (db.datname = 'sandbox' OR db.datname IS NULL)
AND NOT pid = pg_backend_pid();


  locktype  | relation |     mode      | tid | vtid  |  pid  | granted 
------------+----------+---------------+-----+-------+-------+---------
 virtualxid |          | ExclusiveLock |     | 3/427 | 47715 | t
(1 row)

提前谢谢你,

最佳答案

这似乎是 Django 的一部分 - 驱动程序行为,没有明确设置自动提交。使用 autocommit = True,所有查询在其评估时开始和结束。

我知道就查询+更新而言是不安全的,但大多数时候,查询只是……查询

干杯

关于django - 如何处理 Django-PostgreSQL 锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26380412/

相关文章:

java - Java中的多锁单解锁?

python - 如何使用 django 在 url 中添加问号?

java - Java 开发者视角下的 Django

python - Django vs Python2.7 单元测试测试用例?

sql - Postgres UTF8 排序

postgresql - Postgres 条件查询 - 将一个字符串与其他几个字符串进行比较的最佳实践

python - 如何为 Django Pastebin 应用程序中的所有粘贴创建链接列表?

postgresql - 我可以使用复制将数据添加到 Postgres 数组数据类型中吗

ios - 如何在 iOS 上使用 swift 防止我的​​应用程序屏幕锁定

Python 在进程之间共享锁