我怎么能有一个原子代码块不访问Django中的数据库?

2024-03-28 17:28:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从事一个使用DjangoDjango REST Framework的项目。在其中一个视图中,有一个方法F()执行以下操作:

  1. 从数据库获取数据(读取操作)
  2. 向第三方API发送创建(POST)请求。(虽然不是本地的,但这是一个写操作,这是可能发生争用条件的地方)
  3. 返回JSON数据

我希望F()是原子的,换句话说,如果服务器同时接收到多个请求请求此视图,那么服务器应该一次处理一个请求,并且不允许多个线程同时访问此代码块。如何做到这一点?我已经读到Django提供了transactions.atomic()但是这保证了数据库事务的原子性,我需要的是整个代码块的原子性,不管它是否访问数据库


Tags: 项目django方法代码服务器视图restapi