def check_exclusive_mode(self):
        """
        检查是否是独占模式

        参数顺序必须一致,也就是说如果参数顺序不一致,则判定为是两个不同的进程
        这么设计是考虑到:

        - 一般而言,排他模式的服务启动都是crontab等脚本来完成的,不存在顺序变更的可能
        - 这在调试的时候可以帮助我们不需要结束原有进程就可以继续调试

        :return:
        """

        if self.options.exclusive_mode:
            import psutil
            current_pid = os.getpid()
            current = psutil.Process(current_pid).cmdline()

            for pid in psutil.pids():
                p = psutil.Process(pid)
                try:
                    if current_pid != pid and current == p.cmdline():
                        self.error_message(
                            "process exist. pid:{}".format(p.pid))
                        sys.exit(-1)
                        pass

                except psutil.ZombieProcess:
                    # 僵尸进程,无视
                    pass
                except psutil.AccessDenied:
                    # 不具备用户权限
                    pass
                pass
            pass

        pass
def check_exclusive_mode(self):
        """
        检查是否是独占模式

        参数顺序必须一致,也就是说如果参数顺序不一致,则判定为是两个不同的进程
        这么设计是考虑到:

        - 一般而言,排他模式的服务启动都是crontab等脚本来完成的,不存在顺序变更的可能
        - 这在调试的时候可以帮助我们不需要结束原有进程就可以继续调试

        :return:
        """

        if self.options.exclusive_mode:
            import psutil
            current_pid = os.getpid()
            current = psutil.Process(current_pid).cmdline()

            for pid in psutil.pids():
                p = psutil.Process(pid)
                try:
                    if current_pid != pid and current == p.cmdline():
                        self.error_message(
                            "process exist. pid:{}".format(p.pid))
                        sys.exit(-1)
                        pass

                except psutil.ZombieProcess:
                    # 僵尸进程,无视
                    pass
                except psutil.AccessDenied:
                    # 不具备用户权限
                    pass
                pass
            pass

        pass
def check_exclusive_mode ( self ) : if self . options . exclusive_mode : import psutil current_pid = os . getpid ( ) current = psutil . Process ( current_pid ) . cmdline ( ) for pid in psutil . pids ( ) : p = psutil . Process ( pid ) try : if current_pid != pid and current == p . cmdline ( ) : self . error_message ( "process exist. pid:{}" . format ( p . pid ) ) sys . exit ( - 1 ) pass except psutil . ZombieProcess : # 僵尸进程,无视 pass except psutil . AccessDenied : # 不具备用户权限 pass pass pass pass
检查是否是独占模式

        参数顺序必须一致,也就是说如果参数顺序不一致,则判定为是两个不同的进程
        这么设计是考虑到:

        - 一般而言,排他模式的服务启动都是crontab等脚本来完成的,不存在顺序变更的可能
        - 这在调试的时候可以帮助我们不需要结束原有进程就可以继续调试

        :return:
检查是否是独占模式