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


Ответы (0 шт):