Мы работаем над интеграцией двух разных приложений, которые работают одновременно и обмениваются данными. Одно приложение предоставляет данные, другое вычисляет некоторые значения на основе внешних систем и данных и должно предоставить их обратно первому приложению.
Мы используем эту библиотеку для обмена данными между приложениями: http://grouplab.cpsc.ucalgary.ca/cookbook/index.php/Toolkits/Networking
Библиотека в основном позволяет создавать общий словарь, который может быть запрошен любым приложением (при условии, что он знает местоположение общего словаря).
Итак, что должно произойти, программа A должна предоставить некоторые данные программе B, а программа B использует эти данные и вернуть некоторые другие данные обратно в программу A.
Моя проблема в том, как мне заставить программу ждать ответа B. Если говорить более конкретно, я могу поместить объект в общий словарь, другая программа получит уведомление об изменении в словаре, она может вычислить некоторые атрибуты и обновления объекта в словаре. Программа A может получать уведомления, но я хочу, чтобы программа A ожидала, пока не получит этот ответ - действие программы A должно основываться на возвращаемом значении.
Очень уродливый способ, которым я вижу, что это можно сделать, - это иметь внутри функции бесконечный цикл, который продолжает запрашивать словарь, чтобы увидеть, был ли объект обновлен - если он вышел из цикла и использует объект и вычисляемые атрибуты. Кто-нибудь знает более хорошее решение?