로드 중...
검색 중...
일치하는 항목 없음
transport_engine.py
1가져오기io
2가져오기os
3가져오기sys
4가져오기시간
5가져오기zip파일
6
7가져오기인증서
8가져오기슬롯 사이트 추천engine
9from게임가져오기GamsWorkspace
10from슬롯 사이트 추천engine.api가져오기jobs_api
11
12if__name__ =="__main__":
13sys_dir = sys.argv[1]iflen(sys.argv) > 1그밖에 없음
14work_dir = sys.argv[2]iflen(sys.argv) > 2그밖에 없음
15ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
16
17모델 ="trnsport"
18ws.gamslib(모델)
19
20model_data_path = os.path.join(ws.working_directory, 모델 +".zip")
21
22 zipfile.Zip파일(model_data_path,"w", zipfile.ZIP_DEFLATED)as모델_데이터:
23model_data.write(
24os.path.join(ws.working_directory, 모델 +".gms"), 아크이름=모델 +".gms"
25 )
26
27stdout_filename ="log_stdout.txt" # str | stdout을 캡처하는 파일 이름 (기본값은 'log_stdout.txt')
28인수 = [
29 "gdx=기본값"
30]# 목록[str] | 슬롯 사이트 추천 호출에 전달될 인수(선택사항)
31
32데이터 =없음 # 파일 | zip 형식의 데이터가 포함된 파일(선택 사항)
33pf_file_name =없음 # str | zip에 있는 pf 파일의 이름(있는 경우)(선택 사항)
34text_entries = []# 목록[str] | (선택사항)
35stream_entries = []# 목록[str] | (선택사항)
36inex_file =없음 # 파일 | 결과 zip 파일 내부 내용을 필터링하기 위한 선택적 파일(선택 사항)
37
38구성 = 슬롯 사이트 추천engine.Configuration(
39호스트=os.environ["ENGINE_URL"],
40사용자 이름=os.environ["엔진_사용자"],
41비밀번호=os.environ["엔진_비밀번호"],
42ssl_ca_cert=certifi.where(),
43 )
44configuration.temp_folder_path = ws.working_directory
45네임스페이스 = os.environ[
46 "ENGINE_NAMESPACE"
47]# 문자열 | 모델을 포함하는(또는 포함할) 네임스페이스
48
49 # API 클라이언트 인스턴스로 컨텍스트를 입력
50 함께슬롯 사이트 추천engine.ApiClient(구성)asapi_client:
51 # API 클래스의 인스턴스 생성
52job_api_instance = jobs_api.JobsApi(api_client)
53 시도:
54인쇄(f"모델 게시 중")
55
56 열기(model_data_path,"rb") asf:
57file_content = f.read()
58
59create_job_response = job_api_instance.create_job(
60모델,
61네임스페이스,
62stdout_filename=stdout_filename,
63model_data=(os.path.basename(model_data_path), file_content),
64인수=인수,
65 )
66
67토큰 = create_job_response.token
68인쇄(f"작업 토큰: 토큰")
69
70 제외슬롯 사이트 추천engine.ApiExceptionase:
71인쇄(f"JobsApi.create_job() 호출 시 예외: e\n")
72sys.exit(1)
73
74time_spent = 0.0
75 그동안 사실입니다:
76 시도해 보세요:
77resp = job_api_instance.pop_job_logs(token)
78print(resp.message, end="")
79 ifresp.queue_finished:
80 휴식
81time.sleep(0.5)
82 제외슬롯 사이트 추천engine.ApiExceptionase:
83 ife.status == 403:
84인쇄("작업이 아직 대기열에 있습니다. 0.5초 동안 기다리십시오.")
85time.sleep(0.5)
86time_spent += 0.5
87 iftime_spent > 120:
88인쇄(
89 "엔진 인스턴스가 바쁜 것 같습니다. 나중에 다시 시도하십시오."
90 )
91sys.exit(1)
92 그밖에:
93 올림e
94
95 ifjob_api_instance.get_job(token).process_status != 0:
96인쇄("작업이 성공적으로 종료되지 않았습니다.")
97
98 시도해 보세요:
99인쇄(f"모델 결과 가져오는 중: model")
100zip_content = job_api_instance.get_job_zip(토큰)
101 zipfile.ZipFile(io.BytesIO(zip_content))으로zf:
102gdx_file = zf.extract(모델 +".gdx", 경로=ws.working_directory)
103 제외슬롯 사이트 추천engine.ApiExceptionase:
104인쇄(f"JobsApi.get_job_zip() 호출 시 예외: e\n")
105sys.exit(1)
106
107 시도해 보세요:
108 # 서버에서 결과 제거
109job_api_instance.delete_job_zip(토큰)
110 제외슬롯 사이트 추천engine.ApiExceptionase:
111인쇄(f"JobsApi.delete_job_zip() 호출 시 예외: e\n")
112sys.exit(1)
113
114result_db = ws.add_database_from_gdx(
115os.path.join(ws.working_directory, gdx_file)
116 )
117
118 forrec결과_db["x"]:
119인쇄(
120f"x(rec.key(0),rec.key(1)): 레벨=rec.level 한계=rec.marginal"
121 )