This commit is contained in:
DingZQ
2023-10-27 20:21:12 +08:00
13 changed files with 79 additions and 18 deletions

View File

@@ -77,7 +77,7 @@ def _calculate_service_area(name: str, inp, time_index: int = 0) -> dict[str, li
up_link_nodes = node_upstream[node] up_link_nodes = node_upstream[node]
ready = True ready = True
for link_node in up_link_nodes: for link_node in up_link_nodes:
if link_node in node_wip: if link_node[1] in node_wip:
ready = False ready = False
break break
if ready: if ready:
@@ -115,7 +115,7 @@ def _calculate_service_area(name: str, inp, time_index: int = 0) -> dict[str, li
def calculate_service_area(name: str) -> list[dict[str, list[str]]]: def calculate_service_area(name: str) -> list[dict[str, list[str]]]:
inp = json.loads(run_project(name)) inp = json.loads(run_project(name, True))
result: list[dict[str, list[str]]] = [] result: list[dict[str, list[str]]] = []

View File

@@ -3,6 +3,7 @@ import platform
import os import os
import sys import sys
import json import json
import base64
from typing import Any from typing import Any
sys.path.append("..") sys.path.append("..")
from api import project from api import project
@@ -15,6 +16,10 @@ def _verify_platform():
raise Exception(f'Platform {_platform} unsupported (not yet)') raise Exception(f'Platform {_platform} unsupported (not yet)')
if __name__ == '__main__':
_verify_platform()
class Output: class Output:
def __init__(self, path: str) -> None: def __init__(self, path: str) -> None:
self._path = path self._path = path
@@ -210,10 +215,6 @@ class Output:
return data return data
def dump_report(path: str) -> str:
return open(path, mode='r').read()
def _dump_output(path: str) -> dict[str, Any]: def _dump_output(path: str) -> dict[str, Any]:
opt = Output(path) opt = Output(path)
data = opt.dump() data = opt.dump()
@@ -227,7 +228,18 @@ def dump_output(path: str) -> str:
return json.dumps(data) return json.dumps(data)
def run_project(name: str) -> str: def dump_report(path: str) -> str:
return open(path, 'r').read()
def dump_output_binary(path: str) -> str:
with open(path, 'rb') as f:
data = f.read()
bast64_data = base64.b64encode(data)
return str(bast64_data, 'utf-8')
def run_project(name: str, readable_output: bool = False) -> str:
if not project.have_project(name): if not project.have_project(name):
raise Exception(f'Not found project [{name}]') raise Exception(f'Not found project [{name}]')
@@ -250,7 +262,10 @@ def run_project(name: str) -> str:
data['simulation_result'] = 'failed' data['simulation_result'] = 'failed'
else: else:
data['simulation_result'] = 'successful' data['simulation_result'] = 'successful'
data |= _dump_output(opt) if readable_output:
data |= _dump_output(opt)
else:
data['output'] = dump_output_binary(opt)
data['report'] = dump_report(rpt) data['report'] = dump_report(rpt)
@@ -273,12 +288,9 @@ def run_inp(name: str) -> str:
data['simulation_result'] = 'failed' data['simulation_result'] = 'failed'
else: else:
data['simulation_result'] = 'successful' data['simulation_result'] = 'successful'
data |= _dump_output(opt) # data |= _dump_output(opt)
data['output'] = dump_output_binary(opt)
data['report'] = dump_report(rpt) data['report'] = dump_report(rpt)
return json.dumps(data) return json.dumps(data)
if __name__ == '__main__':
_verify_platform()

42
install.py Normal file
View File

@@ -0,0 +1,42 @@
import os
import sys
def install():
if sys.version_info.major != 3:
print("Require install Python 3.x !")
return
minor = sys.version_info.minor
if minor < 4 or minor > 10:
print("Require install Python 3.4 ~ Python 3.10 !")
return
# upgrade pipe
os.system('python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple')
# install package
packages = [
'"psycopg[binary]"',
'pytest',
'numpy']
if minor == 4:
packages.append('script/package/PyMetis-2018.1-cp34-cp34m-win_amd64.whl')
elif minor == 5:
packages.append('script/package/PyMetis-2019.1.1-cp35-cp35m-win_amd64.whl')
elif minor == 6:
packages.append('script/package/PyMetis-2019.1.1-cp36-cp36m-win_amd64.whl')
elif minor == 7:
packages.append('script/package/PyMetis-2020.1-cp37-cp37m-win_amd64.whl')
elif minor == 8:
packages.append('script/package/PyMetis-2020.1-cp38-cp38-win_amd64.whl')
elif minor == 9:
packages.append('script/package/PyMetis-2020.1-cp39-cp39-win_amd64.whl')
elif minor == 10:
packages.append('script/package/PyMetis-2020.1-cp310-cp310-win_amd64.whl')
for package in packages:
os.system(f'pip install {package} -i https://pypi.tuna.tsinghua.edu.cn/simple')
if __name__ == '__main__':
install()

BIN
pg14.zip Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +0,0 @@
python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install "psycopg[binary]" -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install PyMetis-2020.1-cp310-cp310-win_amd64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

12
setup_server.md Normal file
View File

@@ -0,0 +1,12 @@
搭建服务器
1. `git clone https://e.coding.net/tjwater/tjwatercloud/TJWaterServer.git`
2. 控制台进入 `TJWaterServer`
3. 运行 `python install.py` 准备Python环境
4. 解压 `pg14.zip` 到上一层文件夹
5. 控制台进入 `../pg14/bin`
6. 执行 `initdb -D ../data -E UTF-8` 创建数据库
7. 执行 `pg_ctl -D ../data -l logfile start` 启动数据库服务
- `pg_ctl -D ../data -l logfile stop` 关闭数据库服务
8. 进入 `TJWaterServer`,执行 `python create_template.py` 创建模板
9. 搭建FastAPI环境...