Unten ist das Architekturbild dieser Zeit.
・ Zwei Themen in Pub / Sub ┗ Nennen Sie sie "topic_1" und "topic_2".
・ Cloud Scheduler ┗ Setzen Sie das Thema auf "topic_1" und die Nutzdaten auf "hallo".
・ Zwei Funktionen mit Cloud-Funktionen ┗ Nennen Sie sie "function_1" und "function_2" Der Trigger von "function_1" setzt "topic_1" von Pub / Sub Der Trigger von "function_2" setzt "topic_2" von Pub / Sub
In der folgenden "event_message" wird eine Zeichenfolge wie die von Cloud Scheduler über topic_1 festgelegte Nutzlast "hello" gespeichert.
Wenn N Cloud Scheduler nur in der Nutzlast geändert werden und die anderen Einstellungen gleich sind, kann event_message in function_1 beurteilt und die nachfolgende Verarbeitung durchgeführt werden.
def main(event, context):
event_message = base64.b64decode(event['data']).decode('utf-8')
Angenommen, Sie übergeben als nächstes eine Liste an function_2 Pub / Sub kann nur Text übergeben, daher müssen Sie ihn codieren
from google.cloud import pubsub_v1
PROJECT_ID = os.getenv('GCP_PROJECT')
client = pubsub_v1.PublisherClient()
topic_id = "topic_2" #Stellen Sie das Thema als nächstes ein
topic_path = client.topic_path(PROJECT_ID, topic_id)
pub_text = ["Apfel", "Gorilla", "Rap"]
data = pub_text.encode() #Hier kodieren
client.publish(topic_path, data=data) #Das ist ein Thema_2 zum Pub_Text wird gepusht
In der letzten Zeile oben wird '["Apfel", "Gorilla", "Trompete"]' an Topic_2 übergeben und Function_2 wird gezündet.
In der unten stehenden event_message ist '["apple", "gorilla", "trompet"]' enthalten. Bewerten Sie es also und geben Sie es in die Python-Liste zurück. Was ist die nachfolgende Verarbeitung?
def main(event, context):
event_message = base64.b64decode(event['data']).decode('utf-8')
fruit_lst = eval(event_message)
Cloud-Funktionen können parallel gestartet werden, wie im folgenden offiziellen Dokument gezeigt. https://cloud.google.com/functions/quotas?hl=ja#scalability
Wenn Sie also function_1 in einer Schleife wie folgt in Pub / Sub veröffentlichen, erhält function_2 3 Früchte.
function_1.py
from google.cloud import pubsub_v1
PROJECT_ID = os.getenv('GCP_PROJECT')
client = pubsub_v1.PublisherClient()
topic_id = "topic_2"
topic_path = client.topic_path(PROJECT_ID, topic_id)
fruit_lst = ["Apfel", "Gorilla", "Rap"]
for fruit in fruit_lst:
data = fruit.encode()
client.publish(topic_path, data=data)
https://cloud.google.com/solutions/streaming-data-from-cloud-storage-into-bigquery-using-cloud-functions?hl=ja https://cloud.google.com/functions/quotas?hl=ja#scalability
Wenn Sie die Liste auch codieren () und diktieren, sie an Pub / Sub übergeben und auf der Empfangsseite auswerten, wird sie wiederhergestellt. Dies war daher praktisch, wenn Sie regelmäßig mehrere Lichtprozesse ausführen möchten.
Recommended Posts