Dispy,在计算节点上启动SharedJobCluster

时间:2016-11-16 14:21:38

标签: dispy

我正在使用dispy在python中创建一个计算集群。通过在计算节点上启动一个本身启动分布式进程的进程,可以很好地解决我的一个用例。因此,我已经在主调度程序上实现了SharedJobCluster,并且还在将要发送到集群的函数中实现了(这应该会启动一系列分布式进程)。但是,当启动第二个SharedJobCluster时,代码会挂起并且不会超过此行(也不会显示任何错误)。

最低工作示例:

def clusterfun():
    import dispy
    import test2

    import logging
    log_filename = 'worker.log'
    logging.basicConfig(filename=log_filename,
                        level=logging.DEBUG,
                        format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                        datefmt='[%m-%d-%Y %H:%M:%S]')

    logging.info("Starting cluster...")

    # THE FOLLOWING LINE HANGS
    cluster = dispy.SharedJobCluster(test2.clusterfun2, port=0, scheduler_node='127.0.0.1') 

    logging.info("Started cluster...")

    job = cluster.submit()

    logging.info("Submitted job...")

    return job()


if __name__ == '__main__':

    import dispy

    #
    # Start the Compute cluster
    #
    cluster = dispy.SharedJobCluster(clusterfun, port=0, depends=['test2.py'], scheduler_node='127.0.0.1')

    job = cluster.submit()

    print(job())

test2.py包含:

def clusterfun2():

    return "Foo"

作为参考,我目前在同一台机器上运行dispyscheduler.py,dispynode和这个python代码。此设置有效,但尝试启动嵌入式分发任务时除外。

worker.log输出包含" Starting cluster ..."但没有别的。

如果我检查节点的状态,它表示它正在运行1个作业,但它永远不会完成。

0 个答案:

没有答案