Проблемы с тестированием advisory_lock с помощью pytest

В настоящее время я пытаюсь протестировать функцию, которая блокирует некоторую строку и не позволяет делать что-либо под этой заблокированной строкой, используя advisory_lock.

вот мой код:

import pytest

from django_pglocks import advisory_lock
from threading import Thread
from time import sleep

def function_that_should_lock():
    with advisory_lock('secret_string', wait=True):
        sleep(10)


@eager_db_test
def test_lock():
    failed = False

    function_that_should_lock_thread = Thread(
        target=function_that_should_lock,
    )

    function_that_should_lock_thread.start()

    with advisory_lock('secret_string', wait=False):
        failed = True

    assert not failed

По какой-то причине function_that_should_lock фактически не блокирует строку, и failed будет установлено значение True.

Пожалуйста, помогите мне понять, как это работает =)

Вернуться на верх