干杯。我正在运行Ubuntu 10.04和最新的Google AppEngine SDK。我正在开发一个简单的网站,上面有帖子和评论。我基本上实现了一个简单的树来存储我的评论,其中包含parent_comment
,left
和right
值。
我创建了一个事件,该事件会在新的not is_saved()
)评论put()
之前触发到Google数据存储中,该事件会计算新评论的left
和right
值,以及更新有效层次结构的旧注释。我基本上遵循Managing Hierarchical Data in MySQL并在Python中实现它。
一切似乎都运转良好,添加了新的评论,线程看起来不错,但是......
在启动期间提交40条注释的循环工作,但是当我将该循环增加到80或更多时,我留下了IOError:
IOError: [Errno 24] Too many open files: '/tmp/tmp0agXqU'
我生成60条评论的代码如下:
for k in range(0, 4):
comments = {0: None}
for i in range(1, 21):
j = random.randrange(0, len(comments))
pc = comments[j]
comments[i] = Comment(
name=lipsum(count=1),
email=lipsum(count=1, make_slug=True) + '@email.com',
url='http://' + lipsum(count=2, make_slug=True) + '.com',
content=lipsum(count=random.randrange(10, 50)),
object_link=p.key(),
parent_comment=pc
)
comments[i].put()
lipsum
函数只返回一段lorem ipsum文本。
关于如何解决这个问题的任何想法?谢谢!
答案 0 :(得分:2)
对于一个庞大的任务队员来说,我遇到了同样的问题。
切换到本地数据存储区的SQLite可以解决问题:
dev_appserver.py --use_sqlite
自App Engine SDK 1.3.3起,Python SDK有一个新的实验功能 这提供了使用SQLite的选项 作为数据存储区存根后端。运用 dev_appserver中的SQLite应该 加快您当地的表现 数据存储在大型测试时 数据集。
对于dev_appserver
文档,请查看here
答案 1 :(得分:1)
这很可能是由于bug in latest App Engine SDK。错误报告的评论提供了修复问题的补丁。