首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用flask-zodb的LockError

使用flask-zodb的LockError
EN

Stack Overflow用户
提问于 2012-05-21 16:21:33
回答 1查看 866关注 0票数 2

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

代码语言:javascript
复制
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()

或者在如下视图中:

代码语言:javascript
复制
@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'))

我得到了以下错误:

代码语言:javascript
复制
[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'

这个应用程序在开发环境中工作得很好,我不认为有任何限制的问题,因为我尝试设置:

代码语言:javascript
复制
ZODB_STORAGE = "/tmp"

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-21 17:25:53

您正在尝试从多个进程打开ZODB;在开发过程中,您可能只使用一个WSGI进程。这基本上是对zc.lockfile.LockError in ZODB的一种欺骗。

您可以选择:

  1. 将您的生产环境限制为只有一个进程。
  2. 使用ZEO,请参阅参考问题;zodburi equivalent is zeo://localhost:9100.
  3. Use RelStorage。如果RelStorage egg可用,您可以使用ZConfig URI scheme进行连接。在old repoze.zodbconn name.

下的RelStorage文档中记录了这一点

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10681709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档