2017-06-20 1 views
3

Wenn eine Extraktion Abfrage des Python Keen-Client zu machen, sind wir consistentently den gleichen Fehler zu begegnen:QueryIncompleteError: Ihre Abfrage wurde nicht in 300 Sekunden abgeschlossen. Wahrscheinlich stimmt etwas nicht auf unserer Seite

Nachricht: Ihre Abfrage nicht in 300 Sekunden beendete. Höchstwahrscheinlich stimmt etwas auf unserer Seite nicht. Bitte teilen Sie uns dies unter [email protected] mit.

Code: QueryIncompleteError

Die Parameter der Abfrage sind: (im JSON-Format)

{ 
    "timezone": -18000, 
    "event_collection": "Loaded a Page", 
    "filters": [ 
     { 
      "operator": "eq", 
      "property_name": "reportType", 
      "property_value": "Profile" 
     } 
    ], 
    "timeframe": { 
     "start": "2017-04-24", 
     "end": "2017-06-19" 
    } 
} 

Mein Verdacht ist, dass der angeforderte Datumsbereich zu groß ist und die Keen API ist erstickt an die Größe dieses Datasets, aber es ist nicht klar aus der Fehlermeldung.

+0

Haben Sie versucht, eine Grafik des Datumsbereichs gegen die Reaktionszeit zu zeichnen? – plugwash

Antwort

5

Ihre Schätzung ist richtig! Dieser 504-Fehler tritt auf, wenn die Abfrage abläuft (länger als 5 Minuten). Hier sind Möglichkeiten, um die Laufzeit der Anfrage zu reduzieren:

1. Verkürzen Sie den Zeitraum in Ihrer Anfrage

Je kleiner der Zeitraum, desto schneller wird die Abfrage. Eine Abfrage für eine Woche Daten ist viermal schneller als eine Abfrage für einen Monat Daten (ungefähr).

Eine relativ einfache Lösung wäre, diese Abfrage in zwei Abfragen aufzuteilen, indem der Zeitrahmen in zwei oder mehr Teile geteilt wird.

2. Reduzieren Sie die Anzahl der extrahierten Eigenschaften.

Der Abfragetyp extraction akzeptiert einen Parameter namens property_names. Hier können Sie eine Reihe von Eigenschaften auflisten, die Sie für Ihre Extraktion benötigen. Ohne diesen Parameter gibt die API alle Eigenschaften für Ihre Ereignisse zurück. Die Verwendung von property_names, um nur die benötigten Eigenschaften zu extrahieren, kann Ihre Rechenkosten und den Overhead für die Abfrage drastisch reduzieren.

3. Reduzieren Sie Ihre Sammlung Größe

Dies ist wahrscheinlich in diesem Fall gilt nicht, weil es Ihr Datenmodell bereits etabliert und vernünftig aussieht, sondern eine Abfrage 400M Ereignisse zu analysieren wird etwa doppelt so lange dauern als eine Abfrage, die 200M Ereignisse analysiert. Aus diesem Grund empfehlen wir, dass Sie nicht alle Ereignistypen in einer einzigen Megasammlung speichern. Keen wurde entworfen, um mehrere Sammlungen für jede Art von Aktion (Anmeldungen, Öffnen, Nachrichten, etc.) zu haben. Wenn Sie diese Auflistung beispielsweise auf "Eine Profilseite laden" beschränken, wäre Ihre Abfrage viel schneller, da nicht alle anderen reportTypes sortiert werden müssten.

Für andere, die auf diesen Fehler stoßen, kann auch die Abfrageantwortzeiten auf Millisekunden reduzieren. Caching funktioniert für alle analysis types wie zählen, Summe, Median, etc., außer für Extraktionen.

Verwandte Themen