我正在使用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个作业,但它永远不会完成。