데비안 및 파이썬 2.7.1을 실행중인 웹 서버에서 ZODB 3.10.2를 사용하려고합니다. 2 개의 서로 다른 프로세스에서 동일한 데이터베이스에 액세스하려고 할 때마다 신비한 예외가 발생합니다. 나는 대화 형 파이썬 세션에서 데이터베이스에 액세스 시도하고 모든 것이 잘 작동하는 것 같았다 :ZODB의 zc.lockfile.LockError
>>> import ZODB
>>> from ZODB.FileStorage import FileStorage
>>> storage = FileStorage("test.db")
>>>
을하지만 그때 나는 동시에 실행하는 다른 세션의 명령 같은 일련의 시도가 작동하지 않았다 :
>>> import ZODB
>>> from ZODB.FileStorage import FileStorage
>>> storage = FileStorage("test.db")
No handlers could be found for logger "zc.lockfile"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/ZODB3-3.10.2-py2.7-linux-x86_64.egg/ZODB/FileStorage/FileStorage.py", line 125, in __init__
self._lock_file = LockFile(file_name + '.lock')
File "/usr/local/lib/python2.7/site-packages/zc.lockfile-1.0.0-py2.7.egg/zc/lockfile/__init__.py", line 76, in __init__
_lock_file(fp)
File "/usr/local/lib/python2.7/site-packages/zc.lockfile-1.0.0-py2.7.egg/zc/lockfile/__init__.py", line 59, in _lock_file
raise LockError("Couldn't lock %r" % file.name)
zc.lockfile.LockError: Couldn't lock 'test.db.lock'
>>>
왜 이런 일이 발생합니까? 그것에 대해 무엇을 할 수 있습니까?
답변 해 주셔서 감사합니다. ZODB가 다중 프로세스 액세스를 지원하지 않는다는 것을 알지 못했습니다. 선반과 같은 것을 찾고 있었지만 더 나은 동시성 지원이 필요했습니다. 한 프로세스에서 다른 프로세스로 데이터를 읽는 동안 데이터베이스에 안정적으로 데이터를 쓸 수 있어야합니다. 나는 ZEO를 시도 할 수도 있고 다른 곳에서도 볼 수도 있습니다. –