Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

414
Visualizações
¿Puede el punto muerto select_for_update de Django cuando se usa en el mismo registro dos veces?

Tengo un código que sería mucho más simple con llamadas anidadas a select_for_update() , pero me temo que me estoy preparando para un punto muerto.

Ejemplo:

 with transaction.atomic(): uu1 = UniUser.objects.select_for_update().get(pk=uupk) with transaction.atomic(): uu2 = UniUser.objects.select_for_update().get(pk=uupk) # why no deadlock here?? uu2.bio = 'i like pizza' uu2.save() uu1.bio = 'i like pie' uu1.save()

Habría esperado que el segundo select_for_update() se bloqueara, ya que está tratando de bloquear un registro ya bloqueado, pero este código funciona bien y terminamos con 'i like pie' en la biografía. Lo mismo sucede si elimino la transacción interna y solo bloqueo el mismo registro dos veces en la misma transacción.

¿Por qué no hay punto muerto aquí? ¿Es este un código seguro?

En caso de que la respuesta sea específica de la base de datos, estoy usando Postgres.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El candado es adquirido y retenido por su transacción.

Cuando intenta tomarlo nuevamente, no sucede nada ya que su transacción ya tiene un candado en esa fila.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda