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