Я получаю эту ошибку (builtins.RuntimeError) Второе одновременное чтение по файлу 27 обнаружено. Я использую одноэлементный класс для построения соединения, сельдерей для задач, и есть API, который принимает project_id в качестве входных данных и удаляет строки из нескольких таблиц для этого конкретного проекта. Поскольку я использую сельдерей, когда есть два или более параллельных запроса, эта ошибка выскакивает
class DBConnector(object):
def __init__(self, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_IP, DATABASE_NAME):
self.DATABASE_USERNAME = DATABASE_USERNAME
self.DATABASE_PASSWORD = DATABASE_PASSWORD
self.DATABASE_IP = DATABASE_IP
self.DATABASE_NAME = DATABASE_NAME
# creats new connection
def create_connection(self):
print("Creating connection")
engine = create_engine("mysql+mysqlconnector://{0}:{1}@{2}/{3}".format(DATABASE_USERNAME, DATABASE_PASSWORD,
DATABASE_IP, DATABASE_NAME),
pool_recycle=900, pool_size=5).connect()
return engine
# For explicitly opening database connection
def __enter__(self):
self.dbconn = self.create_connection()
return self.dbconn
def __exit__(self, exc_type, exc_val, exc_tb):
self.dbconn.close()
class DBConnection(object):
connection = None
@classmethod
def get_connection(cls, new=False):
if new or not cls.connection:
cls.connection = DBConnector(DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_IP, DATABASE_NAME).create_connection()
return cls.connection
@classmethod
def execute_query(cls, query):
engine = cls.get_connection()
try:
res = engine.execute(query)
return res
except Exception as e:
print(e)
engine = cls.get_connection(new=True) # Create new connection
#cursor = engine.cursor()
res = engine.execute(query)
return res