#python-3.x #rabbitmq #pika #graph-tool
Вопрос:
Я использую pika 1.1 и graph-tool 3.4 в своем приложении на python. Он использует задачи из RabbitMQ, которые затем используются для построения графиков с помощью инструмента graph-tool, а затем выполняет некоторые вычисления.
Некоторые вычисления, такие как промежуточность, требуют большой мощности процессора, из-за чего загрузка процессора в течение длительного времени достигает 100%. Иногда соединение rabbitmq отключается, что приводит к тому, что задача запускается с самого начала.
Несмотря на то, что вычисления выполняются в отдельном процессе, я предполагаю, что в то время, когда процессор загружен на 100%, он не может найти никакой возможности отправить сердцебиение в rabbitmq, что приводит к разрыву соединения. Это происходит не всегда, что случайно указывает на то, что время от времени он может посылать сердцебиения. Это только мое предположение, я не уверен, что еще может вызвать это.
Я попытался снизить приоритет процесса расчета с помощью nice(19)
, что не сработало. Я предполагаю, что это не влияет на процессы, порожденные graph-инструментом, который сам по себе распараллеливает работу.
Поскольку это всего лишь одна строка кода, graph.calculate_betweenness(...
у меня нет места, чтобы вручную отправлять сердцебиения или замедлять выполнение, чтобы создать возможность для сердцебиений.
- Может ли мое предположение о том, что сердцебиения не отправляются, потому что процессор очень занят, быть правильным?
- Если да, то как я могу справиться с этим сценарием?