Тестирование возможности параллелизма в приложении Django

Допустим, у меня есть приложение Django с именем MyApp, в котором есть модель Django с именем MyModel. У этой модели есть метод под названием process. База данных - Postgresql, поэтому она позволяет выполнять параллельные запросы.

Мне нужно проверить, может ли метод MyModel.process() выполняться одновременно без проблем.

Итак, в моих тестах, когда я делаю

class test_smtg(TestCase):
    def setup(self):
        self.my_model = MyModel()
        self.my_model.save()

    def test_single_processing(self):
        self.my_model.process()

Он успешно обрабатывается. Однако, когда я делаю следующее:

import threading

class test_smtg(TestCase):
    def setup(self):
        self.my_model = MyModel()
        self.my_model.save()

    def test_concurrent_processing(self):
        thread = threading.Thread(target=self.my_model.process)
        thread.start()

Он сразу же сообщает мне об ошибке, например, что идентификатор my_model не может быть найден в таблице myapp_mymodel. Почему так? Почему программа не может увидеть объект в базе данных, работая в отдельном потоке? И что я могу сделать, чтобы проверить, работает ли параллелизм, не разрушая мои тесты?

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