Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2011 13:00:37

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4137
Репутация: +  252  -
Профиль   Отправить e-mail  

zodb Как включить поддержку blob на zeo сервере?

Хотел попользовать 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, или надо включить поддержку.
Как все-таки делать блобы? И возможно-ли их подключить?



Офлайн

#2 Июнь 7, 2011 08:11:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4137
Репутация: +  252  -
Профиль   Отправить e-mail  

zodb Как включить поддержку blob на zeo сервере?

надо включить поддержку и со стороны сервера например задав конфиг файл:
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 только тесты есть.



Офлайн

#3 Май 11, 2015 23:15:06

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

zodb Как включить поддержку blob на zeo сервере?

спасибо, помогло :)

Офлайн

#4 Май 13, 2015 21:35:54

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4137
Репутация: +  252  -
Профиль   Отправить e-mail  

zodb Как включить поддержку blob на zeo сервере?

bismigalis
спасибо, помогло :)
Помогло через 5 лет!!!
Кстати вас возраст темы не смущает?



Отредактировано doza_and (Май 13, 2015 21:36:34)

Офлайн

#5 Май 14, 2015 12:20:04

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

zodb Как включить поддержку blob на zeo сервере?

doza_and
Помогло через 5 лет!!!
реально помогло, мог бы и сам разобраться, но сколько времени бы убил. А так зашел через гугл и порешал сразу.

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

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version