欢呼我正在运行Ubuntu 10.04和最新的Google AppEngine SDK。我正在一个简单的网站上,该网站上有帖子和帖子评论。我基本上实现了一个简单的树来存储带有parent_comment
,left
和right
值的注释。
我创建了一个事件,该事件在将新(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