Postgres не успевает записывать данные из RabbitMQ
Есть очередь в rabbit, которую слушает consumer, написанный на python:
def generate_callback(table_name, count_columns):
def callback(ch, method, properties, body):
body_json = json.loads(body)
sql = f"INSERT INTO {table_name} ({', '.join(list(body_json.keys())[:-1])}) VALUES ({r'%s, ' * (count_columns - 1)}%s)"
result = prepare_data(body_json)
try:
db_cursor.execute(sql, result[:-1])
db_conn.commit()
channel.basic_ack(delivery_tag=method.delivery_tag)
except:
print(f"Error in message:\n{body}")
return callback
# Начинаем слушать очередь
channel.basic_consume(
queue='applications_dwh',
on_message_callback=generate_callback('appl_test', 21),
auto_ack=True
)
channel.basic_consume(
queue='deals_dwh',
on_message_callback=generate_callback('deal_test', 11),
auto_ack=True
)
Проблема заключается в том, что относительно небольшую очередь consumer успевает записывать, однако есть очередь, в которой сообщения только копятся и consumer не успевает их разбирать
P.S. была идея делать insert пачками, но не уверен, что это правильный способ P.S.2 большое кол-во данных сохраняется в формате jsonb