ZODB / ZEO . Подключение к серверу с клиента

В принципе, я могу использовать ZODB нормально. Однако, уроки ZEO очень запутаны.

Насколько я понимаю, вы запускаете сервер, зайдя в мою директорию и набрав в командной строке

python runzeo.py -C zeo.config

Где мой файл zeo.config выглядит следующим образом

<zeo>
  address localhost:8090
</zeo>

<filestorage>
  path C:\\Anaconda\\Lib\\site-packages\\ZEO\\var\\tmp\\Data.fs
</filestorage>

<eventlog>
  <logfile>
    path C:\\Anaconda\\Lib\\site-packages\\ZEO\\var\\tmp\\zeo.log
    format %(asctime)s %(message)s
  </logfile>
</eventlog>

Когда я запускаю его, файл журнала заполняется

2014-07-02T14:49:15 (1948) opening storage '1' using FileStorage
2014-07-02T14:49:15 StorageServer created RW with storages:     1:RW:C:\\Anaconda\\Lib\\site-packages\\ZEO\\var\\tmp\\Data.fs
2014-07-02T14:49:15 (1948) listening on ('localhost', 8090)

Теперь, когда я пытаюсь заставить клиента добавить некоторые случайные вещи в базу данных с отпечатками после каждой строки, чтобы увидеть, как это происходит:

from ZEO.ClientStorage import ClientStorage
from ZODB import DB
import transaction


print "starting"
storage=ClientStorage(('localhost',8090))
print "storage opened"
db=DB(storage)
conn=db.open()
print "connection opened" 
root=conn.root()
print "established connection"
root['letters']=['a','b','c']
print "added values"
transaction.commit()
print "transaction done"
root.close()
print "closed"

Мой код печатает только "запуск", никаких сообщений об ошибках не выдается, поэтому я предполагаю, что он застревает в строке storage = ClientStorange(('localhost',8090)), мой файл Data.fs остается неизменным. Я понятия не имею, что не так, и я ознакомился со всеми учебниками.

Я на Windows, использую Python 2.7 и установил ZEO / ZODB из pip, поэтому я предполагаю, что они все последние версии, что помогает.

Мы будем благодарны за любую помощь или указатели на разные объектно-ориентированные базы данных (с множественным доступом к процессам).

Спасибо всем

1 ответ

Решение

Нашел ответ на свой вопрос. Кажется, есть ошибка с реализацией использования localhost в Windows. (Запуск сервера и клиента на одной машине)

Исходный код требует редактирования:

У меня та же проблема (не удается подключиться к ZEO Server) с использованием ZODB/ZEO 4.0 с Python 2.7.6 в Windows.

Предлагаемое решение (изменение строки 446 в ZEO/zrpc/client.py) работает для меня, так почему бы не включить патч в версию 4.0?

- socket.getaddrinfo(host or 'localhost', port)
+ socket.getaddrinfo(host or 'localhost', port, 0, socket.SOCK_STREAM)"

С https://bugs.launchpad.net/zodb/+bug/1004513

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