流年时光岁月 发表于 2022-3-3 13:42:29

【BUG记录】TypeError: 'bool' object is not iterable

Traceback (most recent call last):File "/www/server/panel/BTPanel/__init__.py", line 1762, in publicObject    return run_exec().run(toObject, defs, get)File "/www/server/panel/BTPanel/__init__.py", line 1710, in run    result = getattr(toObject,get.action)(get)File "class/panelProjectController.py", line 76, in model    result = run_object(pdata)File "/www/server/panel/class/projectModel/nodejsModel.py", line 1353, in stop_project    if pids: self.kill_pids(pids=pids)File "/www/server/panel/class/projectModel/nodejsModel.py", line 1171, in kill_pids    pids = sorted(pids,reverse=True)TypeError: 'bool' object is not iterable

谢花郎 发表于 2022-3-3 14:34:52

您好,您这个是node项目内操作停止时报错的吗?还是做了什么操作提示错误信息

流年时光岁月 发表于 2022-3-4 21:41:11

node 项目停止和删除都会报这个错

堡塔开发wzz 发表于 2022-3-4 22:58:54

流年时光岁月 发表于 2022-3-4 21:41
node 项目停止和删除都会报这个错

经过测试,并未复现此问题;

可以尝试自助修复,删除面板依赖的python,然后执行修复命令,修复不会影响现有数据
rm -rf /www/server/panel/pyenv
curl http://download.bt.cn/install/update_panel.sh|bash

lrvinye 发表于 2022-3-24 11:07:15

堡塔安全赤井秀一 发表于 2022-3-4 22:58
经过测试,并未复现此问题;

可以尝试自助修复,删除面板依赖的python,然后执行修复命令,修复不会影响 ...

发现了同样的问题 7.9.0

堡塔开发wzz 发表于 2022-3-24 11:08:02

lrvinye 发表于 2022-3-24 11:07
发现了同样的问题 7.9.0

按照楼上的方法重新下载python环境试试

lrvinye 发表于 2022-3-24 11:43:50

本帖最后由 lrvinye 于 2022-3-24 11:47 编辑

lrvinye 发表于 2022-3-24 11:07
发现了同样的问题 7.9.0
7.9.0 版本 出现此错误
已找到BUG,请BT官方及时处理

在 /www/server/panel/class/projectModel/nodejsModel.py 文件中

1159行
应该返回 all_pids 参数而 不是 True
修改为如下代码后修复此错误
def get_project_state_by_cwd(self,project_name):
      '''
            @name 通过cwd获取项目状态
            @author hwliang<2022-01-17>
            @param project_name<string> 项目名称
            @return bool or list
      '''
      project_find = self.get_project_find(project_name)
      self._pids = psutil.pids()
      if not project_find: return []
      all_pids = []
      for i in self._pids:
            try:
                p = psutil.Process(i)
                if p.cwd() == project_find['path']:
                  pname = p.name()
                  if pname in ['node','npm','pm2','yarn'] or pname.find('node ') == 0:
                        cmdline = ','.join(p.cmdline())
                        if cmdline.find('God Daemon') != -1:continue
                        env_list = p.environ()
                        if 'name' in env_list:
                            if not env_list['name'] == project_name: continue
                        if 'NODE_PROJECT_NAME' in env_list:
                            if not env_list['NODE_PROJECT_NAME'] == project_name: continue
                        all_pids.append(i)
            except: continue
      if all_pids:
            pid_file = "{}/{}.pid".format(self._node_pid_path,project_name)
            public.writeFile(pid_file,str(all_pids))
            return all_pids
      return False
但是停止项目后,任然会自动重新启动

lrvinye 发表于 2022-3-24 12:08:46

堡塔安全赤井秀一 发表于 2022-3-24 11:08
按照楼上的方法重新下载python环境试试

7.9.0 版本 出现此错误
已找到BUG,请BT官方及时处理

在 /www/server/panel/class/projectModel/nodejsModel.py 文件中

1159行
应该返回 all_pids 参数而 不是 True
修改为如下代码后修复此错误

但是停止项目后,任然会自动重新启动

def get_project_state_by_cwd(self,project_name):
      '''
            @name 通过cwd获取项目状态
            @author hwliang<2022-01-17>
            @param project_name<string> 项目名称
            @return bool or list
      '''
      project_find = self.get_project_find(project_name)
      self._pids = psutil.pids()
      if not project_find: return []
      all_pids = []
      for i in self._pids:
            try:
                p = psutil.Process(i)
                if p.cwd() == project_find['path']:
                  pname = p.name()
                  if pname in ['node','npm','pm2','yarn'] or pname.find('node ') == 0:
                        cmdline = ','.join(p.cmdline())
                        if cmdline.find('God Daemon') != -1:continue
                        env_list = p.environ()
                        if 'name' in env_list:
                            if not env_list['name'] == project_name: continue
                        if 'NODE_PROJECT_NAME' in env_list:
                            if not env_list['NODE_PROJECT_NAME'] == project_name: continue
                        all_pids.append(i)
            except: continue
      if all_pids:
            pid_file = "{}/{}.pid".format(self._node_pid_path,project_name)
            public.writeFile(pid_file,str(all_pids))
            return all_pids
      return False


大炮运维V587 发表于 2022-3-26 21:00:46

lrvinye 发表于 2022-3-24 12:08
7.9.0 版本 出现此错误
已找到BUG,请BT官方及时处理



非常感谢您的反馈,我们核对下

堡塔开发wzz 发表于 2022-3-27 09:19:04

你好,此问题已经修复,请前往首页--右上角点击修复面板;宝塔币已经发送到论坛绑定的手机号中

宝塔用户_nuwdvb 发表于 2024-9-19 15:30:12

9.2.0也会出现

页: [1]
查看完整版本: 【BUG记录】TypeError: 'bool' object is not iterable