【问题标题】:LockError using flask-zodb使用烧瓶 zodb 的 LockError
【发布时间】:2012-05-21 08:21:33
【问题描述】:

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

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

或在这样的视图中:

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

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

【问题讨论】:

    标签: python flask zodb


    【解决方案1】:

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

    您的选择是:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-16
      • 2018-04-15
      • 2016-03-19
      • 2021-05-17
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 2015-09-14
      相关资源
      最近更新 更多