Работает ли django транзакция.non_atomi c в сценариях управления? - PullRequest
0 голосов
/ 20 апреля 2020

Я хотел бы обновить каждую запись в одной транзакции. По этой причине я написал следующий сценарий управления:

class Command(BaseCommand):
help = 'perform health check on all instances'

def printit(self):
    print('commited...')

@transaction.non_atomic_requests
def handle(self, *args, **options):

    # perform health check and data collection on all known servers
    print('Performing health checks...')
    for instance in Instance.objects.all():
        with transaction.atomic():
            instance.collect_stats()
            transaction.on_commit(self.printit)

В документации может быть активирована @action.non_atomic_requests для представлений. Эта опция также влияет на сценарии управления?

1 Ответ

0 голосов
/ 20 апреля 2020

Ваш код будет запускаться collect_stats для каждого экземпляра в его собственной транзакции, независимо от того, используете ли вы transaction.non_atomic_requests.

transaction.non_atomic_requests и указывает Django обработчику представления не использовать транзакция для просмотра . Ваш метод handle не является представлением, он не запускается обработчиком представления Django, поэтому декоратор не будет иметь никакого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...