Последовательное выполнение нескольких запросов R / W в одной и той же функции django просмотров - PullRequest
0 голосов
/ 25 февраля 2020

Я читал и записывал запросы в моей единственной функции просмотра Django. Как показано ниже:

def multi_query_function(request):
    model_data = MyModel.objects.all()  #first read command
    ...(do something)...
    new_data = MyModel(
                       id=1234,
                       first_property='random value',
                       second_property='another value'
                       )
    new_data.save()                     #second write command
    return render(request, index.html)

Мне нужно, чтобы эти запросы выполнялись последовательно. Например, если несколько пользователей используют эту функцию одновременно, она должна выполнять эту функцию для обоих пользователей по одному. 'чтение' одного пользователя должно быть разрешено только в том случае, если предыдущий пользователь завершил оба своих / 1006 * 'чтения и записи' . Запросы обоих пользователей никогда не должны смешиваться.

Должен ли я использовать функцию блокировки таблиц моей PostgreSQL БД или есть какой-либо другой хорошо управляемый способ?

1 Ответ

0 голосов
/ 25 февраля 2020

Да, использование блокировок вашей базы данных - хороший способ сделать это.

https://github.com/Xof/django-pglocks выглядит как хорошая библиотека, которая предоставляет вам менеджер контекста блокировки.

...