Python 如何为超过50000个URL的django站点地图创建索引

Python 如何为超过50000个URL的django站点地图创建索引,python,django,sitemap,django-sitemaps,Python,Django,Sitemap,Django Sitemaps,我有以下url配置 url(r'^sitemap\.xml$', index, {'sitemaps': sitemaps}), url(r'^sitemap-(?P<section>.+)\.xml', cache_page(86400)(sitemap), {'sitemaps': sitemaps}), 但是有五万多篇文章。因此,我在尝试/sitemap articles.xml时出现超时错误,因为它试图获取所有文章 我该如何创建一个索引,并按照下面文档中的说明在这里进行分页

我有以下url配置

url(r'^sitemap\.xml$', index, {'sitemaps': sitemaps}),
url(r'^sitemap-(?P<section>.+)\.xml', cache_page(86400)(sitemap), {'sitemaps': sitemaps}),
但是有五万多篇文章。因此,我在尝试
/sitemap articles.xml
时出现超时错误,因为它试图获取所有文章

我该如何创建一个索引,并按照下面文档中的说明在这里进行分页

试试这个

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
然后

article_list = Article.objects.filter(is_visible=True, date_published__lte=timezone.now())
paginator = Paginator(article_list, 10)
page = request.GET.get('page')


try:
    articles = paginator.page(page)
except PageNotAnInteger:
    articles = paginator.page(1)
except EmptyPage:
    articles = paginator.page(paginator.num_pages)

您可以使用URL访问站点地图,如
sitemap\.xml?page=5

我已设置限制=5000,问题已解决

class ArticlesDetailSiteMap(Sitemap):
    changefreq = "daily"
    priority = 0.9
    limit = 5000

    def items(self):
        return Article.objects.filter(is_visible=True, date_published__lte=timezone.now())

它为所有分页为5000的文章创建了分页URL是的,我知道这一点,但它在文档中说,它在创建索引后处理分页本身。我不知道我哪里出错了,以及如何创建索引。Doc说,如果你的一个站点地图的URL超过50000个,你应该创建一个索引文件。在这种情况下,Django将自动为站点地图分页,索引将反映这一点。在这种情况下,请尝试在
可见的
字段的表上添加数据库索引。您可以使用
db\u index=True
来实现这一点。依我看,这实际上可以归结为数据库优化。您可能会查看您的查询并尝试在数据库端对其进行一些调整。
是否可见
feild已经
DB\u index=True
,在这种情况下,仍然存在此问题请尝试运行一些数据库诊断。获取django试图在DB服务器上调用的查询,并对其运行一个解释计划。您最终找到了如何执行该操作的方法吗?这是正确的答案(对我来说很有用)。请参阅文档:。上一条评论的更新链接:
class ArticlesDetailSiteMap(Sitemap):
    changefreq = "daily"
    priority = 0.9
    limit = 5000

    def items(self):
        return Article.objects.filter(is_visible=True, date_published__lte=timezone.now())