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)"