获取项目详情信息 @author baozi <202-02-22> @param: project_info ( dict ): 项目详情 @return : 项目详情的列表
(self, project_info)
| 1666 | return data |
| 1667 | |
| 1668 | def _get_project_state(self, project_info): |
| 1669 | """获取项目详情信息 |
| 1670 | @author baozi <202-02-22> |
| 1671 | @param: |
| 1672 | project_info ( dict ): 项目详情 |
| 1673 | @return : 项目详情的列表 |
| 1674 | """ |
| 1675 | if not isinstance(project_info['project_config'], dict): |
| 1676 | project_info['project_config'] = json.loads(project_info['project_config']) |
| 1677 | |
| 1678 | pyenv = self.environment_manager.get_env_py_path( |
| 1679 | project_info['project_config'].get("python_bin", project_info['project_config']["vpath"]) |
| 1680 | ) |
| 1681 | if pyenv: |
| 1682 | project_info["shell_active"] = self.get_active_shell(project_info["name"], pyenv) |
| 1683 | project_info["pyenv_data"] = pyenv.to_dict() |
| 1684 | else: |
| 1685 | project_info["shell_active"] = "" |
| 1686 | project_info["pyenv_data"] = {} |
| 1687 | |
| 1688 | project_info["project_config"]["prep_status"] = self.prep_status(project_info['project_config']) |
| 1689 | if project_info["project_config"]["stype"] == "python": |
| 1690 | project_info["config_file"] = None |
| 1691 | elif project_info["project_config"]["stype"] == "uwsgi": |
| 1692 | project_info["config_file"] = '{}/uwsgi.ini'.format(project_info["project_config"]["path"]) |
| 1693 | else: |
| 1694 | project_info["config_file"] = '{}/gunicorn_conf.py'.format(project_info["project_config"]["path"]) |
| 1695 | pids = self.get_project_run_state(project_info["name"]) |
| 1696 | if not pids: |
| 1697 | project_info['run'], project_info['status'], project_info["project_config"]["status"] = False, 0, 0 |
| 1698 | project_info["listen"] = [] |
| 1699 | else: |
| 1700 | project_info['run'], project_info['status'], project_info["project_config"]["status"] = True, 1, 1 |
| 1701 | mem, cpu = self.get_mem_and_cpu(pids) |
| 1702 | project_info.update({"cpu": cpu, "mem": mem}) |
| 1703 | project_info["listen"] = self._list_listen(pids) |
| 1704 | project_info["pids"] = pids |
| 1705 | for i in ("start_sh", "stop_sh", "check_sh"): |
| 1706 | if i in project_info["project_config"]: |
| 1707 | project_info["project_config"].pop(i) |
| 1708 | |
| 1709 | def get_active_shell(self, p_name, pyenv) -> str: |
| 1710 | pyenv.use2project(p_name) |
no test coverage detected