آزمایش عملکردهای Google Cloud به صورت محلی

عملکرد Google Cloud یک بستر محاسباتی بدون سرور است که به شما امکان می دهد بدون تهیه یا مدیریت سرورها ، کد را در پاسخ به رویدادها اجرا کنید.
در این بخش اول از یک آموزش دو مرحله ای ، ما نحوه آزمایش عملکردهای Google Cloud را به صورت محلی بررسی خواهیم کرد. در بخش دوم ، نحوه استقرار آنها از GitHub را پوشش خواهیم داد.
پیش نیازهای
برای دنبال کردن ، شما نیاز دارید:
- یک حساب Google Cloud
- یک حساب کاربری با مجوزها برای استقرار توابع Google Cloud
- برخی از کدهایی که می خواهید روی توابع ابر اجرا کنید
برای این مثال ، من از کد نمونه زیر استفاده می کنم:
import requests
import pandas_gbq
import pandas as pd
from google.oauth2 import service_account
def get_currency():
"""
Get currency exchange rates from the API and call the save_to_bigquery function to save the data to BigQuery.
Returns the data as a DataFrame.
"""
url = "https://open.er-api.com/v6/latest/USD"
response = requests.get(url=url)
data = response.json()
df = pd.DataFrame(list(data['rates'].items()), columns=["currency", "exchange_rate"])
if not df.empty:
save_to_bigquery(df)
return "Process completed!"
else:
return "No data found."
def save_to_bigquery(dataframe):
"""
Save the data to BigQuery.
Required: service_account.json file with the credentials.
"""
df = dataframe
project_id = "erthal-blog-de-projects"
dataset_table = "financial.currency"
credentials = service_account.Credentials.from_service_account_file("service_account.json")
pandas_gbq.to_gbq(df, dataset_table, project_id, credentials = credentials, if_exists='replace')
شما می توانید از هر کدی که دوست دارید استفاده کنید – این فقط یک مثال ساده است. اسکریپت بالا نرخ ارز (دلار به سایر ارزها) را از یک API رایگان دریافت می کند و داده ها را در یک مجموعه داده BigQuy ذخیره می کند.
چارچوب توابع
برای آزمایش عملکرد محلی ، می توانیم از چارچوب عملکرد Google استفاده کنیم. این کتابخانه به ما امکان می دهد یک سرور توسعه محلی را تنظیم کرده و عملکرد را از طریق درخواست های HTTP ایجاد کنیم.
lib را از طریق PIP نصب کنید:
pip install functions-framework
تنظیم سرور HTTP
برای اجرای عملکرد محلی ، ما باید:
- وارد کردن کتابخانه
- یک نقطه ورود برای عملکرد را تعریف کنید
وارد کردن کتابخانه
import functions-framework
تعریف نقطه ورود
در @functions_framework.http
دکوراتور مشخص می کند که عملکرد باید درخواست ها را شروع کند.
@functions_framework.http
def get_currency(request):
"""
Get currency exchange rates from the API and call the save_to_bigquery function to save the data to BigQuery.
Returns the data as a DataFrame.
"""
url = "https://open.er-api.com/v6/latest/USD"
response = requests.get(url=url)
data = response.json()
df = pd.DataFrame(list(data['rates'].items()), columns=["currency", "exchange_rate"])
if not df.empty:
save_to_bigquery(df)
return "Process completed!"
else:
return "No data found."
توجه: من پارامتر درخواست را در get_currency (درخواست) اضافه کردم ، زیرا توابع Google Cloud برای پردازش درخواست های HTTP به آن نیاز دارد.
اجرای عملکرد به صورت محلی
سرور محلی را با اجرا شروع کنید:
functions-framework --target=main --port=YOUR_PORT
این دستور یک سرور HTTP را در درگاه مشخص شده شروع می کند (پیش فرض: 8080
). اگر دستور بدون خطا اجرا شود ، سرور تمام شده و منتظر درخواست است.
متوقف کردن عملکرد
اگر نیاز به متوقف کردن سرور دارید (به عنوان مثال ، برای استفاده مجدد از عملکرد خود) ، از دستور زیر در اوبونتو استفاده کنید:
fuser -k YOUR_PORT/tcp
آزمایش عملکرد
برای ارسال درخواست به عملکرد محلی خود ، یک ترمینال دیگر (یا از پستچی استفاده کنید) باز کنید و اجرا کنید:
curl localhost:YOUR_PORT -X POST -H "Content-Type: application/json"
اگر همه چیز به درستی تنظیم شده باشد ، عملکرد باید یک پاسخ موفق (HTTP 200) را برگرداند و درخواست را پردازش کند. می توانید سیاهههای مربوط به ترمینال را که عملکرد در آن کار می کند نظارت کنید.
امیدوارم این راهنما به شما در آزمایش عملکردهای Google Cloud به صورت محلی کمک کند! 🚀