Я создаю программу, класс которой используется локально, но я хочу, чтобы этот же класс использовался одинаково в сети. Это означает, что мне нужно иметь возможность делать синхронные вызовы с любым из его открытых методов. Класс читает и записывает файлы, поэтому я думаю, что XML-RPC - это слишком много. Я создал базовый клиент / сервер RPC, используя примеры из витой, но у меня проблемы с клиентом.
c = ClientCreator(reactor, Greeter)
c.connectTCP(self.host, self.port).addCallback(request)
reactor.run()
Это работает для одного вызова, когда данные получены, я вызываю реактор.stop (), но если я сделаю еще какие-нибудь вызовы, реактор не будет перезапущен. Есть ли что-то еще, что я должен использовать для этого? может быть, другой витой модуль или другой фреймворк?
(Я не включаю детали того, как работает протокол, потому что главное - я получаю только один звонок из этого.)
Приложение и разъяснение:
Я поделился документом Google с заметками о том, что я делаю. http://docs.google.com/Doc?id=ddv9rsfd_37ftshgpgz
У меня написана версия, которая использует fuse и может объединять несколько локальных папок в точку монтирования fuse. Доступ к файлу уже обрабатывается в классе, поэтому я хочу, чтобы серверы предоставляли мне сетевой доступ к тому же классу. После продолжения поиска, я подозреваю, что pyro (http://pyro.sourceforge.net/) может быть тем, что я действительно ищу (просто основываясь на чтении их домашней страницы прямо сейчас), но я открыт для любых предложений.
Я мог бы достичь аналогичных результатов, используя монтирование nfs и комбинируя его с моей локальной папкой, но я хочу, чтобы все одноранговые узлы имели доступ к одной и той же комбинированной файловой системе, поэтому для каждого компьютера требовался бы сервер nfs количество монтируемых nfs равно числу компьютеров в сети.
Вывод:
Я решил использовать rpyc, поскольку он дал мне именно то, что я искал. Сервер, который хранит экземпляр класса, которым я могу манипулировать, как если бы он был локальным. Если кому-то интересно, я выкладываю свой проект на Launchpad (http://launchpad.net/dstorage).