pb_daemon.py 文件源码

python
阅读 30 收藏 0 点赞 0 评论 0

项目:Scalable-PaQL-Queries 作者: mattfeel 项目源码 文件源码
def check_current_running_experiments(expdb):
    sql = "SELECT *, NOW() - starttime AS time_elapsed " \
          "FROM exp " \
          "WHERE status = 'running' " \
          "ORDER BY starttime, id "
    exps = []

    for exp in list(expdb.sql_query(sql)):
        if exp.pid is not None:
            # Just check if process is still alive
            try:
                # print "Checking pid = {}".format(exp.pid)
                # os.kill(exp.pid, 0)
                proc = psutil.Process(exp.pid)
            except psutil.NoSuchProcess:
                # print "pid is dead"
                if exp.manager_uuid != manager_uuid:
                    set_experiment_as_error(expdb, exp, "daemon crashed")
                else:
                    raise Exception
            else:
                if proc.status() == psutil.STATUS_ZOMBIE:
                    set_experiment_as_error(expdb, exp, "zombie")
                elif proc.status() == psutil.STATUS_RUNNING:
                    # print "pid is alive and running"
                    exps.append(exp)
                else:
                    raise Exception("Process (pid={}) status `{}' not supported.".format(exp.pid, proc.status()))

        else:
            set_experiment_as_error(expdb, exp, "no pid")

    return exps
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号