def init(job_id=None, mode: WorkMode = WorkMode.STANDALONE): if job_id is None: job_id = str(uuid.uuid1()) LoggerFactory.setDirectory() else: LoggerFactory.setDirectory( os.path.join(file_utils.get_project_base_directory(), 'logs', job_id)) RuntimeInstance.MODE = mode if mode == WorkMode.STANDALONE: from arch.api.standalone.eggroll import Standalone RuntimeInstance.EGGROLL = Standalone(job_id=job_id) elif mode == WorkMode.CLUSTER: from arch.api.cluster.eggroll import _EggRoll from arch.api.cluster.eggroll import init as c_init c_init(job_id) RuntimeInstance.EGGROLL = _EggRoll.get_instance() else: from arch.api.cluster import simple_roll simple_roll.init(job_id) RuntimeInstance.EGGROLL = simple_roll.EggRoll.get_instance() RuntimeInstance.EGGROLL.table("__federation__", job_id, partition=10)
# Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # -*- coding: utf-8 -*- from arch.api.utils import file_utils from arch.api.utils.log_utils import LoggerFactory LoggerFactory.setDirectory() logger = LoggerFactory.getLogger("task_manager") ''' Constants ''' API_VERSION = "v1" ROLE = 'manager' SERVERS = 'servers' MAX_CONCURRENT_JOB_RUN = 5 DEFAULT_WORKFLOW_DATA_TYPE = ['train_input', 'data_input', 'id_library_input', 'model', 'predict_input', 'predict_output', 'evaluation_output', 'intersect_data_output'] _ONE_DAY_IN_SECONDS = 60 * 60 * 24 DEFAULT_GRPC_OVERALL_TIMEOUT = 60 * 1000 # ms HEADERS = { 'Content-Type': 'application/json',