Django orm - многоуровневые соединения с postgesql
у меня есть следующий код (модель django)
class AgentNmapTask(NmapTask):
def execute(self):
self.condition = ConditionTypes.LAUNCHED
self.save()
self.send_request_to_server('put',
'/api/server/nmap/tasks/update/',
{
'status': self.condition,
'id': self.id,
'count_of_launches': self.count_of_launches,
'next_run': self.next_run
})
results, error = super().execute()
if error:
agent_nmap_result: AgentNmapResult = AgentNmapResult.objects.create(task=self, error=error)
else:
agent_nmap_result: AgentNmapResult = AgentNmapResult.objects.create(task=self, result=results)
self.send_request_to_server('put',
'/api/server/nmap/tasks/update/',
{
'status': self.condition,
'id': self.id,
'count_of_launches': self.count_of_launches,
'next_run': self.next_run
})
self.send_request_to_server('post',
'/api/server/nmap/results/',
{'nmap_task_id_on_agent': self.id, **model_to_dict(agent_nmap_result)})
i do next test
for i in range(10):
self.assertEqual(self.client.post(
'/api/agent/nmap/tasks/',
data={
'ip_range': f'127.0.0.{i}',
'arguments': '-p0-1000 -Pn',
'company': f'test',
},
format='json',
).status_code, 201)
self.assertEqual(self.client.post(
'/api/agent/nmap/tasks/',
data={
'ip_range': f'127.0.0.{i}',
'arguments': '-p0-1000 -Pn',
'company': f'test123',
},
format='json',
).status_code, 201)
def execute_task(agent_nmap_task):
agent_nmap_task.execute()
agent_nmap_tasks = AgentNmapTask.objects.all()
executor = concurrent.futures.ThreadPoolExecutor(max_workers=10)
future_tasks = [executor.submit(execute_task, agent_nmap_task) for agent_nmap_task in agent_nmap_tasks]
concurrent.futures.wait(future_tasks)
nmap_result_list = self.client.get('/api/agent/nmap/results/', format='json').json()
self.assertEqual(len(nmap_result_list), 20)
Но когда я запускаю паралельную обработку с помощью concurrent.futures.wait, python не выполняет тест. Похоже, что это или postgesql заблокирован. В "ps aux" я вижу следующее:
postgres 65905 0.1 0.3 675020 29416 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54510) idle in transaction
postgres 65920 0.0 0.2 672076 19588 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54408) INSERT waiting
postgres 65922 0.0 0.2 672076 19576 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54422) INSERT waiting
postgres 65923 0.0 0.2 672076 19460 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54430) INSERT waiting
postgres 65926 0.0 0.2 671548 19296 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54442) INSERT waiting
postgres 65928 0.0 0.2 671548 19292 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54450) INSERT waiting
postgres 65930 0.0 0.2 671548 19292 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54452) INSERT waiting
postgres 65931 0.0 0.2 671548 19296 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54454) INSERT waiting
postgres 65933 0.0 0.2 671548 19296 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54462) INSERT waiting
postgres 65935 0.0 0.2 671548 19292 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54476) INSERT waiting
postgres 65937 0.0 0.2 671548 19292 ? Ss 23:38 0:00 postgres: user test_scanner_db ::1(54488) INSERT waiting
Как я могу изменить свой код в модели или изменить конфигурацию django?
я ничего не пробовал