欢呼我正在运行Ubuntu 10.04和最新的Google AppEngine SDK。我正在一个简单的网站上,该网站上有帖子和帖子评论。我基本上实现了一个简单的树来存储带有parent_commentleftright值的注释。

我创建了一个事件,该事件在将新(not is_saved())注释放入Google数据存储中之前触发,该事件将为新注释计算put()left值,并为有效的层次结构更新较旧的注释。我基本上遵循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()


right函数仅返回一段lorem ipsum文本。

关于如何解决这个问题的任何想法?谢谢!

最佳答案

对于一个庞大的任务队列工作者,我遇到了同样的问题。

将本地数据存储区切换为SQLite可以解决问题:

dev_appserver.py --use_sqlite



  自App Engine SDK 1.3.3起,Python
  SDK具有新的实验功能
  提供使用SQLite的选项
  作为数据存储区存根后端。使用
  dev_appserver中的SQLite应该
  加快本地性能
  大型测试时的数据存储
  数据集。


对于dev_appserver文档,请查看here

07-24 09:46
查看更多