ich eine AWS Lambda-Funktion habe, die Push auf ein einzelnes Gerät wie dies sendet:Ausführen eine große Anzahl von gleichzeitigen Funktionen auf AWS Lambda (zum Beispiel Broadcast-Push-Benachrichtigungen)
var push = function(payload, ctx){
var apn = require('apn');
var connection = new apn.Connection(options);
var token = "(MY TOKEN HERE)";
var device = new apn.Device(token);
var note = new apn.Notification();
note.expiry = Math.floor(Date.now()/1000) + 3600;
note.badge = 3;
note.sound = "ding.wav";
note.alert = "Hello";
note.payload = payload;
connection.on('transmitted', function(){
ctx.succeed({ "response": "OK" })
});
connection.pushNotification(note, device);
}
Jetzt mag ich es so erweitern Ich kann Broadcast Pushs an eine Gruppe von Geräten senden.
Zuerst dachte ich, es wäre einfach, sie alle in eine for-Schleife zu setzen, aber auf den zweiten Gedanken würde es nicht funktionieren, weil der ctx.succeed
Teil nicht zurückkehren sollte, bis alle Push gesendet wurde. Auch wenn ich warte, bis alle Pushs gesendet wurden, würde die Anfrage zu lange dauern und könnte sogar eine Zeitüberschreitung verursachen.
Was ist der richtige Weg, um eine große Anzahl gleichzeitiger Anfragen wie diese auszuführen?
Wie viele gleichzeitige Anfragen sprechen wir? Sie können sie entweder asynchron innerhalb einer einzigen Lambda-Ausführung ausführen oder jede als separate Lambda-Ausführung oder eine Kombination beider Ansätze ausführen. –
Wie wäre es mit einer Million? Wie funktioniert die asynchrone Lambda-Ausführung? Genauer gesagt, wie geht man bei der asynchronen Ausführung einer Funktion vor, ohne dass Lambda den Fehler "Prozess beendet vor Abschluss der Anfrage" ausgelöst hat? – Vlad