- Bedingter Abruf: ETag/Last-Modified werden nach einer 200 gespeichert und als If-None-Match/If-Modified-Since mitgeschickt. Bei 304 wird nichts geparst und keine Folge geschrieben, nur last_refreshed_at aktualisiert und der Fehler gelöscht. Teilen sich mehrere Abos eine URL, gehen die Validatoren nur mit, wenn alle schon einmal abgerufen wurden und dieselben haben. - Fehler (Netz, HTTP >= 400, kein Feed) landen in last_error, last_error_at und error_count; ein erfolgreicher Abruf setzt sie zurück. Feed-Liste und /podcasts/state/ liefern die drei Felder mit. - Dauerhafte Weiterleitungen (301/308 am Anfang der Kette) ändern rss_url, außer der Nutzer hat die neue URL schon abonniert; 302/307 ändern nichts. - Backoff im stündlichen Job: ab 3 Fehlern in Folge nur alle 2, 4, 8, 16, höchstens 24 Stunden. „Alle aktualisieren“ und --feed-id versuchen es trotzdem (max_age gilt weiter). - _fetch_feed liefert jetzt ein FeedFetch-Objekt bzw. wirft FeedFetchError. - Migration 0007_feed_http_cache. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
# Generated by Django 6.1 on 2026-10-02 12:00
|
|
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('podcasts', '0006_episodeprogress_favorite'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='podcastfeed',
|
|
name='http_etag',
|
|
field=models.CharField(blank=True, max_length=500),
|
|
),
|
|
migrations.AddField(
|
|
model_name='podcastfeed',
|
|
name='http_last_modified',
|
|
field=models.CharField(blank=True, max_length=100),
|
|
),
|
|
migrations.AddField(
|
|
model_name='podcastfeed',
|
|
name='last_error',
|
|
field=models.CharField(blank=True, max_length=500),
|
|
),
|
|
migrations.AddField(
|
|
model_name='podcastfeed',
|
|
name='last_error_at',
|
|
field=models.DateTimeField(blank=True, null=True),
|
|
),
|
|
migrations.AddField(
|
|
model_name='podcastfeed',
|
|
name='error_count',
|
|
field=models.PositiveIntegerField(default=0),
|
|
),
|
|
]
|