В настоящее время я внедряю клиент Aerospike Python, чтобы сравнить его с нашей реализацией Redis, чтобы узнать, что быстрее и/или более стабильно.Аэрокосмический клиент Python. Модуль UDF для подсчета записей. Не удается зарегистрировать модуль
Я все еще на ступеньках ребенка, в настоящее время базовая функциональность Unit-Testing, например, если я правильно добавляю записи в свой Set. По этой причине я хочу создать функцию для их подсчета.
я видел в Aerospike-х Documentation, что:
«выполнить агрегацию на запрос, сначала необходимо зарегистрировать UDF с базой данных».
Похоже, что это предложенный способ, чтобы агрегации, подсчет и другие пользовательские функции выполнялись в Aerospike.
Поэтому для подсчета записей в наборе у меня есть, я создал следующий модуль:
# "counter.lua"
function count(s)
return s : map(function() return 1 end) : reduce (function(a,b) return a+b end)
end
Я пытаюсь использовать функцию aerospike Python клиента зарегистрировать UDF (User Defined Function) модуль:
udf_put (имя файла, udf_type, политика)
Мой код выглядит следующим образом:
# aerospike_client.py:
# "udf_put" parameters
policy = {'timeout': 1000}
lua_module = os.path.join(os.path.dirname(os.path.realpath(__file__)), "counter.lua") #same folder
udf_type = aerospike.UDF_TYPE_LUA # equals to "0", which is for "Lua"
self.client.udf_put(lua_module, udf_type, policy) # Exception is thrown here
query = self.client.query(self.aero_namespace, self.aero_set)
query.select()
result = query.apply('counter', 'count')
генерируется исключение:
exceptions.Exception: (-2L, 'Имя файла должно быть строкой', 'SRC/Главный/клиент/udf.c', 82)
- Что я пропускаю или делаю неправильно?
- Есть ли способ «отладить» его без компиляции кода C?
- Есть ли другой способ подсчета записей в моем наборе? Или я в порядке с модулем Lua?
Это большое исправлено с последним выпуском. У вас была возможность проверить? –
Извините, еще нет возможности проверить, сделаю, когда это возможно! благодаря – AAndronis