Dispy, инициирующий SharedJobCluster на вычислительном узле

Я создаю вычислительный кластер в Python, используя dispy. Один из моих вариантов использования был бы очень хорошо решен путем запуска процесса на вычислительном узле, который сам запускает распределенный процесс. Поэтому я реализовал 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 ответов

Другие вопросы по тегам