У меня есть некоторая функция (save_histoty), которая использует многопроцессорность.Эта функция вставляет объекты в БД.Чтобы улучшить время, я использовал Process из многопроцессорной обработки.Запуск метона:
def run(self):
from time import sleep
from django import db
db.connections.close_all()
Я использую новое соединение для каждого процесса так же, как это необходимо.Эта функция находится в модуле night_scripts.И его работа хороша
Но тогда я использую py.test
def test_order(self):
res = night_scripts.run_night_scripts()
Трассировка назад:
def create_cursor (self):
cursor = self.connection.cursor ()
E InterfaceError: соединение уже закрыто
CRITICAL [NIGHT TESTING] script <save_history> failed
Traceback (most recent call last):
File "/home/healfy/PycharmProjects/finance_/finance/finance/../apps/main/night_scripts.py", line 65, in wrapper
func(*args, **kwargs)
File "/home/healfy/PycharmProjects/finance_/finance/finance/../apps/main/night_scripts.py", line 268, in delete_unfinished_loans
Loan.objects.delete_unfinished_loans()
File "/home/healfy/PycharmProjects/finance_/finance/finance/../apps/main/managers.py", line 594, in delete_unfinished_loans
.update(status=Loan.REVOKED)
File "/home/healfy/.virtualenvs/finance/local/lib/python2.7/site-packages/django/db/models/query.py", line 637, in update
rows = query.get_compiler(self.db).execute_sql(CURSOR)
File "/home/healfy/.virtualenvs/finance/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1148, in execute_sql
cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
File "/home/healfy/.virtualenvs/finance/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 833, in execute_sql
cursor = self.connection.cursor()
File "/home/healfy/.virtualenvs/finance/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 233, in cursor
cursor = self.make_cursor(self._cursor())
File "/home/healfy/.virtualenvs/finance/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 206, in _cursor
return self.create_cursor()
File "/home/healfy/.virtualenvs/finance/local/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/home/healfy/.virtualenvs/finance/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 206, in _cursor
return self.create_cursor()
File "/home/healfy/.virtualenvs/finance/local/lib/python2.7/site-packages/django/db/backends/postgresql/base.py", line 211, in create_cursor
cursor = self.connection.cursor()
InterfaceError: connection already closed
Это означает, что когда функция выполняется, она закрывает все соединения?
И как это исправить?
платформа linux2 -- Python 2.7.15rc1, pytest-2.9.1, py-1.6.0, pluggy-0.3.1