【问题标题】:IPython parallel : how to recover job IDs from IPcontrollerIPython 并行:如何从 IPcontroller 恢复作业 ID
【发布时间】:2016-05-30 17:01:20
【问题描述】:

我有一台运行 IP 控制器和 12 个 IPengine 的服务器。我使用 SSH 从笔记本电脑连接到控制器。我使用负载平衡视图接口(在非阻塞模式下)向控制器提交了一些作业,并将消息 ID 存储在由 apply_async() 方法返回的 Asyc Result 对象中。

我不小心丢失了作业的消息 ID,并想知道是否有办法从 Hub 数据库中检索作业 ID(或结果)。我为 Hub 使用 SQLite 数据库,我可以让 rc.db_query() 方法工作,但我不知道要查找什么。

有谁知道如何仅在 Hub 数据库中查询我提交的作业的消息 ID?如果我无权访问 AsyncHubResult 对象(或其消息 ID),从 Hub 检索作业结果的最简单方法是什么?

谢谢!

【问题讨论】:

    标签: ipython jupyter ipython-parallel


    【解决方案1】:

    如果没有消息 ID,您可能很难找到正确的任务,除非没有提交这么多任务。

    查询基于MongoDB(使用mongodb的时候是直通,sqlite实现了简单操作符的子集)。

    快速总结:查询是一个字典。如果您使用文字值,它们是相等测试,但您可以将 dict 值用于比较运算符。

    您可以按日期搜索任何时间戳:

    • 提交:到达控制器
    • 开始:到达引擎
    • 已完成:在引擎上完成

    例如,查找昨天提交的任务:

    from datetime import date, time, timedelta, datetime
    # round to midnight
    today = datetime.combine(date.today(), time())
    yesterday = today - timedelta(days=1)
    
    rc.db_query({'submitted': {
      '$lt': today, # less than midnight last night
      '$gt': yesterday, # greater than midnight the night before
    }})
    

    或所有 1-4 小时前提交的任务:

    found = rc.db_query({'submitted': {
      '$lt': datetime.now() - timedelta(hours=1),
      '$gt': datetime.now() - timedelta(hours=4),
    }})
    

    根据结果,您可以查看 client_uuid 之类的键来检索给定客户端实例(例如单个笔记本或脚本)提交的所有消息:

    client_id = found[0]['client_uuid']
    all_from_client = rc.db_query({'client_uuid': client_uuid})
    

    由于此时您只对结果感兴趣,因此您可以指定 keys=['msg_id'] 以仅检索消息 ID。然后我们可以使用这些 msg_id 来获取单个客户端会话产生的所有结果:

    # construct list of msg_ids
    msg_ids = [ r['msg_id'] for r in rc.db_query({'client_uuid': client_uuid}, keys=['msg_id']) ]
    # use client.get_result to retrieve the actual results:
    results = rc.get_result(msg_ids)
    

    此时,您已经获得了所有结果,但是您失去了哪些结果来自哪个执行的关联。那里没有太多信息可以帮助您,但您可以通过类型、时间戳或从给定会话中选择 9 个最终项目来判断。

    【讨论】:

    • 谢谢!这对我正在做的事情非常有效。我只提交了一组作业,所以检索结果没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多