Hintergrundaufträge
Welche Arbeit XICBOT im Hintergrund erledigt, in welcher Reihenfolge, wie oft ein gescheiterter Auftrag wiederholt wird und wie lange Aufträge bleiben.
In einfacher Sprache
Manche Arbeit dauert länger als eine Anfrage. Ein Beispiel ist das Einlesen einer Website. Solche Arbeit läuft im Hintergrund. Sie bekommen gleich eine Antwort, die Arbeit folgt danach. Diese Seite nennt die Arten von Aufträgen. Sie zeigt, in welcher Reihenfolge sie drankommen. Sie sagt, was bei einem Fehler geschieht. Und sie sagt, wie lange ein Auftrag gespeichert bleibt.
Alle Themen der Dokumentation
Manche Arbeit dauert länger als eine Anfrage: eine Website einlesen, das Wissen nachrechnen, einen Shop abgleichen, Mails und Webhooks zustellen, die Prüffragen eines Assistenten durchlaufen. XICBOT nimmt solche Arbeit als Hintergrundauftrag an, antwortet sofort und erledigt den Auftrag danach. Diese Seite beschreibt, welche Aufträge es gibt, in welcher Reihenfolge sie an die Reihe kommen, was bei einem Fehler geschieht und wie lange ein Auftrag gespeichert bleibt.
Was im Hintergrund läuft
Jeder Auftrag hat eine Art (task), eine Bahn und eine Priorität. Die Bahn ergibt sich aus der Art, die Priorität legt die Stelle fest, die den Auftrag anlegt. Eine kleinere Zahl heißt: früher an der Reihe.
| Art | Wozu | Entsteht durch | Bahn | Priorität |
|---|---|---|---|---|
source.ingest | Eine Website-Quelle zum ersten Mal einlesen | Anlegen einer Quelle vom Typ Website, in der Anwendung oder über die Schnittstelle mit API-Schlüssel | index | 3 |
source.refresh | Eine Website-Quelle erneut einlesen | Neu einlesen, auf Wunsch mit Vollständig neu aufbauen (3); der tägliche Auffrischungslauf für fällige Website-Quellen und die Auffrischung einer veralteten Quelle, die eine Antwort heranzieht (7) | index | 3 oder 7 |
knowledge.rebuild | Anreicherung und Vektoren der Abschnitte nachrechnen | Anlegen einer Quelle in der Anwendung außer einer Sammlung von Frage-Antwort-Paaren oder über die Schnittstelle mit API-Schlüssel, Neu einlesen, das Lesen der Website bei einer Einrichtung und POST /api/v1/knowledge/embed (5); eine automatische Auffrischung (8) | index | 5 oder 8 |
setup.propose | Aus Ihrer Website einen Einrichtungsvorschlag erstellen | Start einer Einrichtung | index | 3 |
assistant.check | Die Prüffragen eines Assistenten durchlaufen | Abnahme starten für einen Assistenten, siehe Probierdialog und Abnahme | index | 5 |
shop.sync | Den Katalog aus einem angebundenen Shop übernehmen | Abgleich von Hand mit Jetzt abgleichen (5); stündlicher Abgleich nach Zeitplan für aktive Konten mit aktiver Anbindung und Shopanbindung im Paket (7) | index | 5 oder 7 |
webhook.deliver | Ein Ereignis an einen Webhook zustellen | Jedes Ereignis, das ein aktiver Webhook abonniert hat, ein Auftrag je Webhook, sofern das Paket die Funktion für Schlüssel und Webhooks enthält | default | 3 |
mail.send | Eine Mail versenden | Übergabe eines Gesprächs an einen Menschen (3); übrige Mails (Vorgabe 5) | default | 3 oder 5 |
report.weekly | Die Wochenauswertung eines Kontos erstellen | Wöchentlicher Zeitplan am Montag, ein Auftrag je aktivem Konto, das die Wochenauswertung nicht abbestellt hat | default | 7 |
Wann der tägliche Auffrischungslauf, der stündliche Shopabgleich und die Wochenauswertung anlaufen, steht unter Zeitpläne.
Bahnen und Reihenfolge
Die Bahn index trägt die langen Läufe: Einlesen, Nachrechnen, Einrichtung, Abnahmeläufe und Shopabgleich. Die Bahn default trägt alles Übrige, also Mails, Webhooks und die Wochenauswertung. Die Trennung soll verhindern, dass eine Mail oder ein Webhook minutenlang hinter einem Einlesen wartet.
Auf jeder Bahn nimmt XICBOT den wartenden Auftrag mit der kleinsten Prioritätszahl, bei gleicher Zahl den älteren. Ein Auftrag, der nach einem Fehlversuch seine Wartezeit absitzt, wird bis zu deren Ende übergangen.
| Priorität | Aufträge |
|---|---|
| 3 | Website-Quelle anlegen, Neu einlesen, Einrichtung, Webhook-Zustellung, Mail zu einer Übergabe |
| 5 | Nachrechnen nach dem Anlegen oder Neu-Einlesen einer Quelle, nach dem Lesen einer Einrichtung und über POST /api/v1/knowledge/embed, Abnahmelauf, Shopabgleich von Hand, übrige Mails |
| 7 | Täglicher Auffrischungslauf, Auffrischung während einer Antwort, Shopabgleich nach Zeitplan, Wochenauswertung |
| 8 | Nachrechnen nach einer automatischen Auffrischung |
Zustände eines Auftrags
| Zustand | Bedeutung |
|---|---|
pending | Wartet auf seine Reihe, auch zwischen zwei Versuchen. Nach einem Fehlversuch steht dessen Grund in error. |
running | Wird gerade bearbeitet. Der Versuch ist schon mitgezählt, der Fehlertext eines früheren Versuchs geleert. |
done | Erledigt. Das Ergebnis steht in result, der Fehlertext ist geleert. |
failed | Endgültig gescheitert: der letzte Versuch ist fehlgeschlagen oder der Auftrag ist verfallen. Der Grund steht in error. |
Wiederholung nach einem Fehler
Ein Auftrag hat bis zu drei Versuche. Ein Versuch zählt, sobald XICBOT den Auftrag aufnimmt. Scheitert er und sind Versuche übrig, geht der Auftrag mit einer Wartezeit zurück auf pending. Scheitert der dritte Versuch, steht der Auftrag endgültig auf failed. Der Fehlertext bleibt am Auftrag, gekürzt auf 500 Zeichen. Ein endgültig gescheiterter Auftrag erzeugt für den Betrieb eine kritische Meldung der Quelle queue, siehe Meldungen.
| Nach | Wartezeit auf default | Wartezeit auf index |
|---|---|---|
| dem 1. Fehlversuch | 30 Sekunden | 2 Minuten |
| dem 2. Fehlversuch | 2 Minuten | 10 Minuten |
| dem 3. Fehlversuch | kein weiterer Versuch, failed | kein weiterer Versuch, failed |
Was als Fehlschlag zählt
- Einlesen: Steht die Quelle nach dem Lauf nicht auf fertig, ist der Versuch gescheitert. Jeder gescheiterte Versuch löst das Webhook-Ereignis
knowledge.failedaus, ein gelungenerknowledge.indexedmit der Zahl der Dokumente und Abschnitte. Scheitert der Aufbau nach dem Abruf, steht die Quelle auf nicht aufgenommen mit dem Grundingest_failed, und der bisherige Inhalt antwortet weiter. Ist die Quelle inzwischen gelöscht, gilt der Auftrag ohne Ausführung als erledigt; sein Ergebnis trägtskippedmitsource_deleted. - Abnahme: Ist der Prüflauf mit seinem Assistenten gelöscht, gilt der Auftrag ohne Ausführung als erledigt (
skippedmitrun_deleted). Scheitert der Auftrag endgültig, wird er geborgen oder verfällt er, steht der Prüflauf auf abgebrochen mit dem Grundjob_failed, siehe Probierdialog und Abnahme. - Webhook: Nur eine Antwort mit Status 2xx gilt als zugestellt. Einer Weiterleitung (3xx) folgt XICBOT nicht, sie zählt als Fehlschlag, ebenso eine Antwort, die länger als 8 Sekunden braucht. Ist der Webhook inzwischen gelöscht oder abgeschaltet oder enthält das Paket die Funktion für Schlüssel und Webhooks nicht mehr, gilt der Auftrag ohne Zustellung als erledigt.
- Abschalten eines Webhooks: Nach 20 gescheiterten Zustellversuchen in Folge schaltet XICBOT den Webhook ab; jeder Wiederholungsversuch zählt mit. Eine gelungene Zustellung setzt den Zähler zurück.
- Mail: Ist eine Mail bereits als versendet vermerkt, geht sie bei einem weiteren Versuch nicht noch einmal hinaus. Eine Mail zu einer Übergabe wird nicht mehr versandt, wenn das Gespräch inzwischen gelöscht ist.
- Shopabgleich: Ein gescheiterter Abruf beim Shop lässt den Auftrag nicht scheitern: er endet auf
done, seinresultträgtok: falseund untererrorden Grund. Der bisherige Katalog bleibt, der Fehler steht an der Anbindung, und der nächste Abgleich nach Zeitplan versucht es erneut.
Signatur, Kopfzeilen und Ereignisse der Webhooks beschreibt API-Schlüssel und Webhooks, die Anbindung eines Shops Katalog, Warenkorb und Shopanbindung.
Hängende und liegengebliebene Aufträge
Ein Auftrag, der seit mehr als einer Stunde als laufend geführt wird oder dessen Arbeitsprozess nicht mehr läuft, gilt als verwaist. XICBOT setzt ihn beim Start des Hintergrunddienstes und bei der stündlichen Wartung zurück: auf pending, solange Versuche übrig sind, sonst auf failed. Der Fehlertext nennt den Grund, bei der Stundenfrist „seit mehr als 3600 Sekunden ohne Fortschritt“.
Ein Auftrag, der 7 Tage nach seiner Anlage noch wartet oder läuft, verfällt bei der Wartung. Er endet ohne weitere Ausführung auf failed mit dem Fehler expired; als sein Ende gilt der Zeitpunkt 7 Tage nach der Anlage. Wartet dazu noch eine Mail auf den Versand, gilt sie als gescheitert mit dem Vermerk „Versandauftrag nach 7 Tagen abgelaufen“.
Doppelte Aufträge
An mehreren Stellen legt XICBOT keinen zweiten Auftrag an, solange ein gleichartiger offen ist, also wartet oder läuft:
- Neu einlesen bei einer Quelle, für die schon ein Einlese- oder Auffrischungsauftrag offen ist, auch die erste Aufnahme einer neuen Website, übernimmt diesen Auftrag; die Antwort trägt
already_open: true. Haken Sie Vollständig neu aufbauen an, während ein Auftrag ohne Neuaufbau noch wartet, übernimmt er den Neuaufbau. Läuft er schon, antwortet die Schnittstelle mit 409 undrefresh_running, und die Anwendung meldet „Für diese Quelle läuft oder wartet ein Aufbau. Bitte danach erneut versuchen.“ Wird ein offener Auftrag übernommen, reiht es das Nachrechnen trotzdem zusätzlich ein. - Der tägliche Auffrischungslauf und die Auffrischung während einer Antwort überspringen eine Quelle, für die schon ein Einlese- oder Auffrischungsauftrag offen ist.
POST /api/v1/knowledge/embedübernimmt einen offenen Nachrechen-Auftrag des Kontos, auch einen für eine andere Quelle; eine mitgegebenesource_idwirkt dann nicht.- Der Abgleich von Hand übernimmt einen offenen Abgleich; die Anwendung meldet dann „Ein Abgleich wartet bereits.“, sonst „Der Abgleich ist eingereiht.“ Ist kein Abgleich offen, gilt bis 15 Minuten nach der letzten Anfrage von Hand eine Sperre: Antwort 429 mit
sync_too_soon,retry_after(Sekunden) und dem KopfRetry-After. Die Anwendung meldet dann „Ein Abgleich von Hand ist höchstens alle 15 Minuten möglich. Der regelmäßige Abgleich läuft davon unabhängig weiter.“ - Der stündliche Abgleich nach Zeitplan lässt ein Konto aus, für das schon ein Abgleich offen ist.
- Der wöchentliche Zeitplan lässt ein Konto aus, für das in dieser Woche schon ein Auftrag zur Wochenauswertung angelegt oder die Auswertung schon versandt ist.
- Ein Abnahmelauf für einen Assistenten, der schon einen offenen Lauf hat, liefert diesen Lauf zurück, sofern er vor weniger als einer Stunde angelegt wurde.
- Solange für eine Quelle ein Einlese- oder Auffrischungsauftrag offen ist, lässt sich keine frühere Fassung dieser Quelle wiederherstellen: Antwort 409 mit
refresh_running.
Aufträge über die Schnittstelle verfolgen
Legt eine Anfrage einen Auftrag an, antwortet die Schnittstelle mit 202 und einem Objekt job mit id, status und task: beim Anlegen einer Website-Quelle, bei POST /api/v1/knowledge/sources/{id}/refresh und bei POST /api/v1/knowledge/embed. Der Abgleich von Hand über POST /api/v1/catalog/shop/sync nennt die Kennung als job_id, dazu already_pending; er verlangt die Rolle Verwaltung. Den Stand jedes dieser Aufträge liefert GET /api/v1/knowledge/jobs/{id}, auch den des Abgleichs.
GET /api/v1/knowledge/jobs/{id}
Liefert den Stand eines Auftrags unter job: id, task, status (pending, running, done, failed), attempts (Zahl der begonnenen Versuche), error (Grund des letzten Fehlschlags; leer, solange ein Versuch läuft, und nach Erfolg), result (Ergebnis eines erledigten Auftrags) und finished_at (Ende bei done und failed im Format ISO 8601, sonst leer). Eine Kennung, die nicht zu Ihrem Konto gehört, ergibt 404 mit not_found.
- Anmeldung
- Angemeldet, bestätigte E-Mail-Adresse, jede Rolle
POST /api/v1/knowledge/sources/{id}/refresh
Liest eine Website-Quelle erneut ein und reiht danach das Nachrechnen ein. Das Feld rebuild (optional, true oder false) bildet alle Abschnitte neu, auch wo sich der Text nicht geändert hat. Ist für die Quelle schon ein Einlese- oder Auffrischungsauftrag offen, übernimmt die Anfrage ihn. Verlangt sie rebuild, während dieser Auftrag ohne Neuaufbau schon läuft, antwortet die Schnittstelle mit 409 und refresh_running. Antwort 202 mit job und already_open; wurde ein offener Auftrag übernommen, nennt job diesen Auftrag, und sein task kann dann auch source.ingest sein. Eine Quelle, die nicht zu Ihrem Konto gehört, ergibt 404 mit not_found, eine Quelle, die keine Website ist, 422 mit website_only.
- Anmeldung
- Angemeldet, bestätigte E-Mail-Adresse, Rolle Bearbeiten oder höher
- Begrenzung
- 20 je Minute und angemeldeter Person, gemeinsam mit dem Anlegen von Quellen, dem Wiederherstellen einer Fassung und
POST /api/v1/knowledge/embed
POST /api/v1/knowledge/embed
Reiht das Nachrechnen von Anreicherung und Vektoren ein. Ohne source_id gilt der Auftrag allen Quellen des Kontos, mit source_id (optional, eine Kennung im UUID-Format) nur dieser Quelle. Gerechnet werden nur Abschnitte ohne aktuellen Stand, höchstens 20000 je Auftrag; was übrig bleibt, nennt das Ergebnis des Auftrags als remaining. Ist schon ein Nachrechen-Auftrag des Kontos offen, übernimmt die Anfrage ihn. Antwort 202 mit job, already_open und dem Stand zum Zeitpunkt der Anfrage über alle Abschnitte des Kontos: vectors mit chunks, embedded und pending, enrichment mit chunks, enriched und pending. In der Anwendung löst Streuung aufbauen diesen Weg aus.
- Anmeldung
- Angemeldet, bestätigte E-Mail-Adresse, Rolle Bearbeiten oder höher
- Begrenzung
- 20 je Minute und angemeldeter Person, gemeinsam mit dem Anlegen, Auffrischen und Wiederherstellen von Quellen
Wie lange Aufträge gespeichert bleiben
- Ist ein Auftrag erledigt oder endgültig gescheitert, kürzt XICBOT seine Nutzdaten auf Verweise wie Quelle, Lauf, Konto, Mailvorlage, Versand, Webhook und Ereignis. Empfänger, Mailinhalt und der Inhalt einer Webhook-Meldung fallen weg; ist etwas weggefallen, trägt der Auftrag die Marke
reduced. - Erledigte und gescheiterte Aufträge werden 14 Tage nach ihrem Ende gelöscht. Bis dahin bleiben Art, Zeiten und Fehlertext.
- Löschen Sie ein Gespräch, gehen die zugehörigen Mail- und Webhook-Aufträge mit. Stehen bleiben offene Webhook-Zustellungen der Ereignisse
lead.createdundappointment.requested, weil sie einen Vorgang melden. - Die Aufträge Ihres Kontos gehören zum Datenexport. Unter Recht und Daten zählt die Tabelle Gespeicherte Daten sie in der Zeile Hintergrundaufträge. Mit dem Konto werden sie gelöscht.
Fristen für Gespräche und andere Daten stehen unter Aufbewahrung und Löschung, Export und Kontolöschung unter Datenschutz und Recht.
Häufige Fragen
Warum steht meine Website-Quelle nach dem Anlegen noch nicht auf fertig?
Sie wird im Hintergrund eingelesen. Das Anlegen antwortet sofort, der Auftrag kommt auf der Bahn index nach Priorität und Alter an die Reihe. Nach Neu einlesen zeigt die Anwendung „Die Quelle wird im Hintergrund aufgenommen. Der Zustand aktualisiert sich von selbst.“ Über die Schnittstelle fragen Sie den Stand mit GET /api/v1/knowledge/jobs/{id} ab.
Wie oft versucht XICBOT eine gescheiterte Webhook-Zustellung?
Bis zu dreimal insgesamt: der zweite Versuch frühestens 30 Sekunden nach dem ersten Fehlschlag, der dritte frühestens 2 Minuten nach dem zweiten. Scheitert auch er, ist der Auftrag gescheitert. Nach 20 gescheiterten Zustellversuchen in Folge, Wiederholungen eingerechnet, schaltet XICBOT den Webhook ab.
Kann ich einen gescheiterten Auftrag neu starten?
Stoßen Sie die Arbeit erneut an, etwa mit Neu einlesen an der Quelle oder mit Jetzt abgleichen in der Shopanbindung. Das legt einen neuen Auftrag an, wieder mit drei Versuchen.
Wie lange stehen Empfänger und Inhalt einer Mail im Auftrag?
Bis der Versand erledigt oder endgültig gescheitert ist. Dann kürzt XICBOT den Auftrag auf Verweise, 14 Tage nach dem Ende wird er gelöscht. Wartet ein Versand länger als 7 Tage, verfällt der Auftrag.
Warum kam das Ereignis knowledge.failed mehrmals für dieselbe Quelle?
Jeder gescheiterte Versuch des Einlesens löst es aus, und ein Auftrag hat bis zu drei Versuche.
Selbst fragen, Assistent dieser Website
Automatischer Assistent