Rebuild_index和update_index被杀死

时间:2013-12-18 13:09:46

标签: django django-haystack whoosh

我遇到了使索引过程正常工作的问题。我有一个名为Article的模型,在db中我在Article表中有943条记录。对于本地测试,我有一篇包含12篇文章的sqlite数据库,并且rebuild_index和update_index运行正常。但是,当我上传到我们的Web服务器时,我从rebuild_index或update_index获得以下输出:

>python manage.py update_index
>Indexing 943 articles
>Killed

我查看了这个答案Django Haystack/ElasticSearch indexing process aborted,但我想避免更改干草堆源代码,如果我可以帮助它。有没有其他人遇到这个?另外,我正在使用飞快移动作为后端。谢谢!

这是模型类:

class Article(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(User)
    abstract = models.CharField(max_length=500, blank=True)
    full_text = models.TextField(blank=True)
    proquest_link = models.CharField(max_length=200, blank=True, null=True)
    ebsco_link = models.CharField(max_length=200, blank=True, null=True)

def __unicode__(self):
    return self.title

这是索引类:

class ArticleIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.NgramField(document=True, use_template=True)
    title = indexes.NgramField(model_attr='title')

    #We'll see how this goes
    authors = indexes.NgramField(model_attr='authors')
    abstract = indexes.NgramField(model_attr='abstract')
    proquest_link = indexes.NgramField(model_attr='proquest_link')
    ebsco_link = indexes.NgramField(model_attr='ebsco_link')



def get_model(self):
    return Article

def index_queryset(self, using=None):
    return self.get_model().objects.all()

2 个答案:

答案 0 :(得分:1)

我打开了一个新的终端窗口并且跑了顶部。事实证明索引过程使用了99.9%的cpu,这就是它失败的原因。内存使用率实际上并没有那么糟糕。所以它不是代码,而是服务器,因为它是一个ec2微实例,在cpu中非常有限。再次感谢Timmy O'Mahony指出我正确的方向。

答案 1 :(得分:0)

我所做的是在我的项目safe_update_index上创建我自己的命令,这是原始命令的副本加上关于pks_seen的其他答案的更改。