gpt4 book ai didi

python - 使用 flask-zodb 的 LockError

转载 作者:行者123 更新时间:2023-11-28 22:02:48 25 4
gpt4 key购买 nike

我在使用 flask-zodb 时遇到问题在一个简单的 Flask使用 mod_wsgi 部署的应用程序。每次我尝试使用数据库时,例如设置默认值:

from flaskext.zodb import zodb, List

db = ZODB(app)
app.config.from_pyfile('settings.py') # here I have defined ZODB_STORAGE = "/home/username/webapps/myapp/htdocs/Data.fs"

@app.before_request
def set_db_defaults():
if 'entries' not in db:
db['entries'] = List()

或者像这样的 View :

@app.route('/add', methods=['POST'])
def add_entry():
db['entries'].append(request.form)
flash('New entry was successfully posted')
return redirect(url_for('show_entries'))

我收到以下错误:

[Sat May 19 16:52:30 2012] [error] [client 127.0.0.1]
self._lock_file = LockFile(file_name + '.lock')
[Sat May 19 16:52:30 2012] [error] [client 127.0.0.1] File
"/home/userame/.virtualenvs/myapp/lib/python2.7/site-packages/zc/lockfile/__init__.py",
line 76, in __init__
[Sat May 19 16:52:30 2012] [error] [client 127.0.0.1] _lock_file(fp)
[Sat May 19 16:52:30 2012] [error] [client 127.0.0.1] File
"/home/username/.virtualenvs/myapp/lib/python2.7/site-packages/zc/lockfile/__init__.py",
line 59, in _lock_file
[Sat May 19 16:52:30 2012] [error] [client 127.0.0.1] raise
LockError("Couldn't lock %r" % file.name)
[Sat May 19 16:52:30 2012] [error] [client 127.0.0.1] LockError:
Couldn't lock '/home/username/webapps/myapp/htdocs/Data.fs.lock'

该应用程序在开发环境中运行良好,我不认为存在前提问题,因为我尝试设置:

ZODB_STORAGE = "/tmp"

并且引发了相同的异常。我不明白为什么会发生这种情况以及如何避免这种错误。有什么想法吗?

最佳答案

您正在尝试从多个进程打开 ZODB;大概在开发中你只使用一个 WSGI 进程。这基本上是 zc.lockfile.LockError in ZODB 的骗局.

您的选择是:

  1. 将您的生产环境限制为只有一个进程。

  2. 使用 ZEO,参见引用问题; zodburi equivalentzeo://localhost:9100

  3. 使用 RelStorage。您可以使用 ZConfig URI scheme连接起来,前提是 RelStorage egg 可用。这记录在 RelStorage 文档中的 old repoze.zodbconn name 下.

关于python - 使用 flask-zodb 的 LockError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10681709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com