2015-04-14 8 views

Antwort

3

Ja, es ist möglich, Sie müssen die "Streaming-Ausführung" wie erwähnt here verwenden.

Mit Google Cloud Pub/Sub als Streaming-Quelle können Sie es als "Trigger" Ihrer Pipeline verwenden.

Von App Engine können Sie die Pub-Aktion für den Pub/Sub Hub mit der REST API.

+0

Dank einleitet! Wenn Sie die Streaming-Ausführung verwenden, muss eine Compute Engine-Instanz mit meinem Datenfluss-Job rund um die Uhr verfügbar sein, richtig? – deemson

+1

Wenn Sie die "Cloud-Ausführung" verwenden, denke ich, es starten und stoppen Instanzen, wenn benötigt wird :) – aqquadro

0

Möglicherweise gibt es eine Möglichkeit, Ihren Dataflow-Job von App Engine aus zu senden, aber dies wird nicht aktiv unterstützt, wie aus dem Mangel an Dokumenten hervorgeht. Die Laufzeitumgebung von APP Engine erschwert es, einige der erforderlichen Operationen durchzuführen, z. um Anmeldeinformationen zu erhalten, um Dataflow-Jobs zu senden.

+0

danke für die Antwort! Ich habe nicht ganz verstanden, was du mit "ist nicht etwas, das aktiv unterstützt wird" gemeint hast. Wird es unterstützt, aber schlecht? Oder es wird überhaupt nicht "sauber und offiziell vorgeschlagen" unterstützt? – deemson

+0

Ich meinte es wäre möglich, aber es wird nicht unterstützt und ich kann nicht garantieren, dass es funktioniert. –

0

Ein Weg wäre in der Tat, Pub/Sub innerhalb von App Engine zu verwenden, um Cloud Dataflow mitzuteilen, wenn neue Daten verfügbar sind. Der Cloud Dataflow-Job würde dann kontinuierlich ausgeführt und App Engine würde die Daten zur Verarbeitung bereitstellen.

würde Ein anderer Ansatz, den Code hinzufügen, die die Cloud-Datenfluss-Pipeline zu einer Klasse in App Engine einrichtet (einschließlich dem Datenfluss-SDK zu Ihrem GAE-Projekt) und die Job-Optionen programmatisch festgelegt, wie hier erklärt:

https://cloud.google.com/dataflow/pipelines/specifying-exec-params

Stellen Sie sicher, dass die Option 'runner' für DataflowPipelineRunner festgelegt ist, sodass sie asynchron auf der Google Cloud Platform ausgeführt wird. Da der Pipeline-Runner (der Ihre Pipeline tatsächlich ausführt) nicht mit dem Code identisch sein muss, der ihn initiiert, kann sich dieser Code (bis zu pipeline.run()) in App Engine befinden.

Sie können dann einen Endpunkt oder ein Servlet zu GAE hinzufügen, das bei Aufruf den Code ausführt, der die Pipeline einrichtet.

noch mehr planen, Sie einen cron-Job in GAE haben könnte, die den Endpunkt aufruft, die die Pipeline ...

+0

Hallo Gavin, unser Backend ist in Python geschrieben und wir hofften, einen Endpunkt zu verwenden, um unsere Dataflow-Jobs auszulösen. Um die zweite Option, die Sie präsentieren, zu verwenden, ist es am besten, wenn wir unsere Pipeline zu einer Datenflussvorlage machen? Dies kann mein Missverständnis sein, aber wenn ich die gesamte Pipeline-Einrichtung einschließlich pipeline.run() in App Engine hätte, würde es immer noch asynchron auf der Google Cloud Platform laufen und nicht in der App Engine aussetzen? Vielen Dank –

Verwandte Themen