/ / 50,000を超えるURLのdjangoサイトマップのインデックスを作成する方法 - python、django、sitemap、django-sitemaps

50.000を超えるURLのdjangoサイトマップのインデックスを作成する方法 - 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}),

サイトマップには次のサイトマップが含まれます

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

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

しかし50.000以上の記事があります。試してみるとタイムアウトエラーになる /sitemap-articles.xml すべての記事を入手しようとしているからです。

どのようなアイデアでも、インデックスを作成してページ付けをここで機能させる必要があります。

https://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/#creating-a-sitemap-index

回答:

回答№1は2

これを試して

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


回答№2の場合は0

制限を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を作成しました