diff --git a/core/sdk-cpp/include/abtest.h b/core/sdk-cpp/include/abtest.h index 9964164c269cdda2c0e9b18dc4143edfe6db94d3..4833325416cfd6418bf33444001917d887f08cc0 100644 --- a/core/sdk-cpp/include/abtest.h +++ b/core/sdk-cpp/include/abtest.h @@ -45,7 +45,28 @@ class EndpointRouterBase { class WeightedRandomRender : public EndpointRouterBase { public: static int register_self() { - INLINE_REGIST_OBJECT(WeightedRandomRender, EndpointRouterBase, -1); + // INLINE_REGIST_OBJECT(WeightedRandomRender, EndpointRouterBase, -1); + + Factory* factory = + new (std::nothrow) Factory(); + if (factory == NULL) { + RAW_LOG_ERROR( + "Failed regist factory: WeightedRandomRender->EndpointRouterBase in " + "macro!"); + return -1; + } + + // When two clients are created in the same process, two + // "WeightedRandomRender" factory objects are registered. + // But in fact, the two clients can use one factory object + // together. + if (FactoryPool::instance().register_factory( + "WeightedRandomRender", factory) != 0) { + RAW_LOG_INFO( + "Factory has been registed: " + "WeightedRandomRender->EndpointRouterBase."); + } + return 0; } diff --git a/python/paddle_serving_client/__init__.py b/python/paddle_serving_client/__init__.py index f3d6a9a661e494bbf8f3ea9995c8e9139fd102d5..acece304414d8b5ebf7f1937cfa495c58e7ac60d 100644 --- a/python/paddle_serving_client/__init__.py +++ b/python/paddle_serving_client/__init__.py @@ -156,7 +156,9 @@ class Client(object): ) else: if self.predictor_sdk_ is None: - self.add_variant('var1', endpoints, 100) + timestamp = time.time() + self.add_variant('default_tag_{}'.format(timestamp), endpoints, + 100) else: print( "parameter endpoints({}) will not take effect, because you use the add_variant function.".