Найти - Пользователи
Полная версия: zodb Как включить поддержку blob на zeo сервере?
Начало » Базы данных » zodb Как включить поддержку blob на zeo сервере?
1
doza_and
Хотел попользовать blob но не получается:
пускаю сервер:
import os
os.system("start runzeo -a localhost:1234 -f "+"some.fs")
Пробую записать blob
#!/usr/bin/env python
# -*- coding: cp1251 -*-

import ZODB
from ZODB.blob import Blob

import transaction
from ZEO import ClientStorage
from ZODB import DB


blob_dir = "data"

addr = 'localhost', 1234
storage = ClientStorage.ClientStorage(addr,blob_dir=blob_dir,shared_blob_dir=None)

db = DB(storage)
connection = db.open()
root = connection.root()



blob = Blob()
f = blob.open("w")
f.write("Hi, Blob!")
f.close()

nothing = transaction.begin()
root["blb"]=blob
root["a"]=123123
nothing.commit()

connection.close()
db.pack()
db.close()
Получаю вылет на commit:

Traceback (most recent call last):
File “aa.py”, line 31, in <module>
nothing.commit()
File “c:\comp\python26\lib\site-packages\transaction-1.1.0-py2.6.egg\transaction\_transaction.py”, line 329, in commit
self._commitResources()
File “c:\comp\python26\lib\site-packages\transaction-1.1.0-py2.6.egg\transaction\_transaction.py”, line 423, in _commitResources
rm.commit(self)
File “c:\comp\python26\lib\site-packages\zodb3-3.10.0b1-py2.6-win32.egg\ZODB\Connection.py”, line 553, in commit
self._commit(transaction)
File “c:\comp\python26\lib\site-packages\zodb3-3.10.0b1-py2.6-win32.egg\ZODB\Connection.py”, line 601, in _commit
self._store_objects(ObjectWriter(obj), transaction)
File “c:\comp\python26\lib\site-packages\zodb3-3.10.0b1-py2.6-win32.egg\ZODB\Connection.py”, line 643, in _store_objects
repr(self._storage))
ZODB.POSException.Unsupported: Storing Blobs in <ZEO.ClientStorage.ClientStorage object at 0x00D00DF0> is not supported.

Я что-то не так делаю? может клиент нужен друой?

С FileStorage все проходит на ура (но несколько иначе):
storage = FileStorage.FileStorage("data/dd.fs")
blob_storage = BlobStorage(blob_dir, storage)
db = DB(blob_storage)
Гипотезы у меня:
неправильный тип ZEO.ClientStorage.ClientStorage, или надо включить поддержку.
Как все-таки делать блобы? И возможно-ли их подключить?
doza_and
надо включить поддержку и со стороны сервера например задав конфиг файл:
zeo.cfg:
<zeo>
address localhost:50001
</zeo>

<blobstorage 1>
blob-dir blobs
<filestorage 1>
path Data.fs
</filestorage>
</blobstorage>

<eventlog>
<logfile>
path zeo.log
format %(asctime)s %(message)s
</logfile>
</eventlog>
и со стороны клиента:
addr = 'localhost', 50001
storage = ClientStorage.ClientStorage(addr,blob_dir='blobs1')
Возможны 2 режима с расшариванием директории с блобами и передачей данных самой базой. Здесь приведен 2 вариант.
доки в
\Lib\site-packages\ZODB3-3.10.3-py2.6-win32.egg\ZODB\tests\
почемуто называются *.txt хотя по формату вроде rst но про zeo только тесты есть.
bismigalis
спасибо, помогло :)
doza_and
bismigalis
спасибо, помогло :)
Помогло через 5 лет!!!
Кстати вас возраст темы не смущает?
bismigalis
doza_and
Помогло через 5 лет!!!
реально помогло, мог бы и сам разобраться, но сколько времени бы убил. А так зашел через гугл и порешал сразу.

doza_and
Кстати вас возраст темы не смущает?
смутил, поэтому смайл в посте

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB