Вы можете использовать модуль картридж.rp c функцию get_candidates
для получения всех узлов с некоторой ролью, которую вы хотите вызвать, а затем использовать модуль картридж.pool function map_call
для вызова вашей функции и отображения результатов. Эта функция доступна в картриджах версии 1.2.0-17. Таким образом, ваш код может быть таким:
local cartridge = require('cartridge')
local nodes = cartridge.rpc_get_candidates('my_role_name', { leaders_only = true, healthy_only = true })
local pool = require('cartridge.pool')
local results, err = pool.map_call('_G.my_function_name', { func_args }, { uri_list = nodes, timeout = 10 })
if (err ~= nil) then
#your error handling#
end
Все ответы функции будут сохранены в results
переменной и сопоставлены для каждого URI. Все ошибки будут сохранены в переменную err
в виде карты с ключами: line, class_name, err, file, suberrors, str