mirror of
https://github.com/wassname/ray.git
synced 2026-08-18 12:20:14 +08:00
[xlang] Cross language Python support (#6709)
This commit is contained in:
@@ -287,10 +287,18 @@ class StreamingWorker {
|
||||
JobID::FromInt(1), gcs_options, "", "127.0.0.1", node_manager_port,
|
||||
std::bind(&StreamingWorker::ExecuteTask, this, _1, _2, _3, _4, _5, _6, _7));
|
||||
|
||||
RayFunction reader_async_call_func{ray::Language::PYTHON, {"reader_async_call_func"}};
|
||||
RayFunction reader_sync_call_func{ray::Language::PYTHON, {"reader_sync_call_func"}};
|
||||
RayFunction writer_async_call_func{ray::Language::PYTHON, {"writer_async_call_func"}};
|
||||
RayFunction writer_sync_call_func{ray::Language::PYTHON, {"writer_sync_call_func"}};
|
||||
RayFunction reader_async_call_func{ray::Language::PYTHON,
|
||||
ray::FunctionDescriptorBuilder::BuildPython(
|
||||
"reader_async_call_func", "", "", "")};
|
||||
RayFunction reader_sync_call_func{
|
||||
ray::Language::PYTHON,
|
||||
ray::FunctionDescriptorBuilder::BuildPython("reader_sync_call_func", "", "", "")};
|
||||
RayFunction writer_async_call_func{ray::Language::PYTHON,
|
||||
ray::FunctionDescriptorBuilder::BuildPython(
|
||||
"writer_async_call_func", "", "", "")};
|
||||
RayFunction writer_sync_call_func{
|
||||
ray::Language::PYTHON,
|
||||
ray::FunctionDescriptorBuilder::BuildPython("writer_sync_call_func", "", "", "")};
|
||||
|
||||
reader_client_ = std::make_shared<ReaderClient>(worker_.get(), reader_async_call_func,
|
||||
reader_sync_call_func);
|
||||
@@ -314,18 +322,22 @@ class StreamingWorker {
|
||||
// Only one arg param used in streaming.
|
||||
STREAMING_CHECK(args.size() >= 1) << "args.size() = " << args.size();
|
||||
|
||||
std::vector<std::string> function_descriptor = ray_function.GetFunctionDescriptor();
|
||||
STREAMING_LOG(INFO) << "StreamingWorker::ExecuteTask " << function_descriptor[0];
|
||||
ray::FunctionDescriptor function_descriptor = ray_function.GetFunctionDescriptor();
|
||||
RAY_CHECK(function_descriptor->Type() ==
|
||||
ray::FunctionDescriptorType::kPythonFunctionDescriptor);
|
||||
auto typed_descriptor = function_descriptor->As<ray::PythonFunctionDescriptor>();
|
||||
STREAMING_LOG(INFO) << "StreamingWorker::ExecuteTask "
|
||||
<< typed_descriptor->ModuleName();
|
||||
|
||||
std::string func_name = function_descriptor[0];
|
||||
std::string func_name = typed_descriptor->ModuleName();
|
||||
if (func_name == "init") {
|
||||
std::shared_ptr<LocalMemoryBuffer> local_buffer =
|
||||
std::make_shared<LocalMemoryBuffer>(args[0]->GetData()->Data(),
|
||||
args[0]->GetData()->Size(), true);
|
||||
HandleInitTask(local_buffer);
|
||||
} else if (func_name == "execute_test") {
|
||||
STREAMING_LOG(INFO) << "Test name: " << function_descriptor[1];
|
||||
test_suite_->ExecuteTest(function_descriptor[1]);
|
||||
STREAMING_LOG(INFO) << "Test name: " << typed_descriptor->ClassName();
|
||||
test_suite_->ExecuteTest(typed_descriptor->ClassName());
|
||||
} else if (func_name == "check_current_test_status") {
|
||||
results->push_back(
|
||||
std::make_shared<RayObject>(test_suite_->CheckCurTestStatus(), nullptr));
|
||||
|
||||
@@ -162,7 +162,8 @@ class StreamingQueueTestBase : public ::testing::TestWithParam<uint64_t> {
|
||||
std::unordered_map<std::string, double> resources;
|
||||
TaskOptions options{0, true, resources};
|
||||
std::vector<ObjectID> return_ids;
|
||||
RayFunction func{ray::Language::PYTHON, {"init"}};
|
||||
RayFunction func{ray::Language::PYTHON,
|
||||
ray::FunctionDescriptorBuilder::BuildPython("init", "", "", "")};
|
||||
|
||||
RAY_CHECK_OK(driver.SubmitActorTask(self_actor_id, func, args, options, &return_ids));
|
||||
}
|
||||
@@ -176,7 +177,8 @@ class StreamingQueueTestBase : public ::testing::TestWithParam<uint64_t> {
|
||||
std::unordered_map<std::string, double> resources;
|
||||
TaskOptions options{0, true, resources};
|
||||
std::vector<ObjectID> return_ids;
|
||||
RayFunction func{ray::Language::PYTHON, {"execute_test", test}};
|
||||
RayFunction func{ray::Language::PYTHON, ray::FunctionDescriptorBuilder::BuildPython(
|
||||
"execute_test", test, "", "")};
|
||||
|
||||
RAY_CHECK_OK(driver.SubmitActorTask(actor_id, func, args, options, &return_ids));
|
||||
}
|
||||
@@ -190,7 +192,8 @@ class StreamingQueueTestBase : public ::testing::TestWithParam<uint64_t> {
|
||||
std::unordered_map<std::string, double> resources;
|
||||
TaskOptions options{1, true, resources};
|
||||
std::vector<ObjectID> return_ids;
|
||||
RayFunction func{ray::Language::PYTHON, {"check_current_test_status"}};
|
||||
RayFunction func{ray::Language::PYTHON, ray::FunctionDescriptorBuilder::BuildPython(
|
||||
"check_current_test_status", "", "", "")};
|
||||
|
||||
RAY_CHECK_OK(driver.SubmitActorTask(actor_id, func, args, options, &return_ids));
|
||||
|
||||
@@ -250,7 +253,8 @@ class StreamingQueueTestBase : public ::testing::TestWithParam<uint64_t> {
|
||||
uint8_t array[] = {1, 2, 3};
|
||||
auto buffer = std::make_shared<LocalMemoryBuffer>(array, sizeof(array));
|
||||
|
||||
RayFunction func{ray::Language::PYTHON, {"actor creation task"}};
|
||||
RayFunction func{ray::Language::PYTHON, ray::FunctionDescriptorBuilder::BuildPython(
|
||||
"actor creation task", "", "", "")};
|
||||
std::vector<TaskArg> args;
|
||||
args.emplace_back(TaskArg::PassByValue(std::make_shared<RayObject>(buffer, nullptr)));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user