۱. مرور کلی
مجموعه آزمایشگاههای کد Serverless Migration Station (آموزشهای عملی و خودآموز) و ویدیوهای مرتبط با آن ، با هدف کمک به توسعهدهندگان Google Cloud serverless برای مدرنسازی برنامههایشان، با راهنمایی آنها در طول یک یا چند مهاجرت، و در درجه اول دور شدن از سرویسهای قدیمی، ارائه میشوند. انجام این کار، برنامههای شما را قابل حملتر میکند و گزینهها و انعطافپذیری بیشتری به شما میدهد و شما را قادر میسازد تا با طیف وسیعتری از محصولات Cloud ادغام شده و به آنها دسترسی داشته باشید و به راحتی به نسخههای جدیدتر زبان ارتقا دهید. در حالی که در ابتدا بر روی اولین کاربران Cloud، در درجه اول توسعهدهندگان App Engine (محیط استاندارد)، تمرکز دارد، این مجموعه به اندازه کافی گسترده است که شامل سایر پلتفرمهای serverless مانند Cloud Functions و Cloud Run یا در صورت لزوم، هر جای دیگری نیز میشود.
این آزمایشگاه کد به شما آموزش میدهد که چگونه وظایف pull مربوط به App Engine Task Queue را به برنامه نمونه از آزمایشگاه کد ماژول ۱ اضافه و استفاده کنید. ما نحوه استفاده از وظایف pull را در این آموزش ماژول ۱۸ اضافه میکنیم، سپس آن استفاده را در ماژول ۱۹ به Cloud Pub/Sub منتقل میکنیم. کسانی که از Task Queues برای وظایف push استفاده میکنند، به Cloud Tasks مهاجرت میکنند و باید به ماژولهای ۷ تا ۹ مراجعه کنند.
یاد خواهید گرفت که چگونه
- از API/سرویس همراه App Engine Task Queue استفاده کنید
- اضافه کردن استفاده از صف کشش به یک برنامه پایه Python 2 Flask App Engine NDB
آنچه نیاز دارید
- یک پروژه پلتفرم ابری گوگل با یک حساب پرداخت فعال GCP
- مهارتهای پایه پایتون
- آشنایی کامل با دستورات رایج لینوکس
- دانش پایه در توسعه و استقرار برنامههای App Engine
- یک برنامهی ماژول ۱ موتور برنامه ( کد آزمایشگاه آن را تکمیل کنید [توصیه میشود] یا برنامه را از مخزن کپی کنید)
نظرسنجی
چگونه از این آموزش استفاده خواهید کرد؟
تجربه خود را با پایتون چگونه ارزیابی میکنید؟
تجربه خود را در استفاده از خدمات ابری گوگل چگونه ارزیابی میکنید؟
۲. پیشینه
برای مهاجرت از وظایف کشیدن صف وظایف App Engine، میزان استفاده از آن را به برنامه Flask و App Engine NDB موجود حاصل از codelab ماژول 1 اضافه کنید. برنامه نمونه، جدیدترین بازدیدها را به کاربر نهایی نمایش میدهد. این خوب است، اما جالبتر این است که بازدیدکنندگان را نیز ردیابی کنید تا ببینید چه کسی بیشترین بازدید را داشته است.
اگرچه میتوانیم از وظایف ارسالی برای این تعداد بازدیدکنندگان استفاده کنیم، اما میخواهیم مسئولیت را بین برنامه نمونه که وظیفه آن ثبت بازدیدها و پاسخ فوری به کاربران است، و یک "کارگر" تعیینشده که وظیفه آن جمعبندی تعداد بازدیدکنندگان خارج از گردش کار معمول درخواست-پاسخ است، تقسیم کنیم.
برای پیادهسازی این طراحی، ما در حال اضافه کردن استفاده از صفهای pull به برنامه اصلی و همچنین پشتیبانی از عملکرد worker هستیم. worker میتواند به عنوان یک فرآیند جداگانه (مانند یک نمونه backend یا کدی که روی یک ماشین مجازی که همیشه روشن است اجرا میشود)، یک cron job یا یک درخواست HTTP خط فرمان اولیه با استفاده از curl یا wget اجرا شود. پس از این ادغام، میتوانید برنامه را در codelab بعدی (ماژول 19) به Cloud Pub/Sub منتقل کنید.
این آموزش شامل مراحل زیر است:
- راهاندازی/پیشپردازش
- پیکربندی را بهروزرسانی کنید
- اصلاح کد برنامه
۳. تنظیمات/پیشپردازش
این بخش توضیح میدهد که چگونه:
- پروژه ابری خود را راهاندازی کنید
- دریافت برنامه نمونه پایه
- (دوباره)استقرار و اعتبارسنجی برنامه پایه
این مراحل تضمین میکنند که شما با کدی کارامد شروع میکنید.
۱. پروژه راهاندازی
اگر آزمایشگاه کد ماژول ۱ را تکمیل کردهاید، از همان پروژه (و کد) دوباره استفاده کنید. روش دیگر، ایجاد یک پروژه کاملاً جدید یا استفاده مجدد از یک پروژه موجود دیگر است. مطمئن شوید که پروژه دارای یک حساب صورتحساب فعال و یک برنامه App Engine فعال است. شناسه پروژه خود را پیدا کنید زیرا چندین بار در این آزمایشگاه کد به آن نیاز خواهید داشت و هر زمان که با متغیر PROJECT_ID مواجه شدید، از آن استفاده کنید.
۲. نمونه برنامه پایه را دریافت کنید
یکی از پیشنیازهای این آزمایشگاه کد، داشتن یک برنامه ماژول ۱ App Engine است که کار کند. آزمایشگاه کد ماژول ۱ (توصیه میشود) را تکمیل کنید یا برنامه ماژول ۱ را از مخزن کپی کنید. چه از کد خودتان استفاده کنید و چه از کد ما، کد ماژول ۱ جایی است که ما "شروع" میکنیم. این آزمایشگاه کد شما را در هر مرحله راهنمایی میکند و با کدی که شبیه کد موجود در پوشه "FINISH" مخزن ماژول ۱۸ است، به پایان میرساند.
- شروع: پوشه ماژول ۱ (پایتون ۲)
- پایان: پوشه ماژول ۱۸ (پایتون ۲)
- کل مخزن (برای کلون کردن یا دانلود فایل زیپ )
صرف نظر از اینکه از کدام برنامه ماژول ۱ استفاده میکنید، پوشه باید مانند خروجی زیر باشد، احتمالاً با یک پوشه lib نیز:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
۳. (دوباره) استقرار برنامه پایه
برای استقرار برنامه ماژول ۱، مراحل زیر را اجرا کنید:
- اگر پوشه
libوجود دارد، آن را حذف کنید وpip install -t lib -r requirements.txtرا برای پر کردن مجددlibاجرا کنید. اگر پایتون ۲ و ۳ را نصب کردهاید، ممکن است لازم باشد از دستورpip2استفاده کنید. - مطمئن شوید که ابزار خط فرمان
gcloudرا نصب و راهاندازی اولیه کردهاید و نحوهی استفاده از آن را بررسی کردهاید. - اگر نمیخواهید
PROJECT_IDخود را با هر دستورgcloudوارد کنید، پروژه Cloud خود را باgcloud config set projectPROJECT_IDتنظیم کنید. - برنامه نمونه را با
gcloud app deployمستقر کنید - تأیید کنید که برنامه ماژول ۱ طبق انتظار اجرا میشود و آخرین بازدیدها را نمایش میدهد (در زیر نشان داده شده است)

۴. بهروزرسانی پیکربندی
هیچ تغییری در فایلهای پیکربندی استاندارد App Engine ( app.yaml ، requirements.txt ، appengine_config.py ) لازم نیست. در عوض، یک فایل پیکربندی جدید به queue.yaml با محتوای زیر اضافه کنید و آن را در همان دایرکتوری سطح بالا قرار دهید:
queue:
- name: pullq
mode: pull
فایل queue.yaml تمام صفهای وظیفه موجود برای برنامه شما را مشخص میکند (به جز صف default [push] که به طور خودکار توسط App Engine ایجاد میشود). در این حالت، فقط یک صف وجود دارد، یک صف pull به نام pullq . App Engine نیاز دارد که دستورالعمل mode به صورت pull مشخص شود، در غیر این صورت به طور پیشفرض یک صف push ایجاد میکند. برای کسب اطلاعات بیشتر در مورد ایجاد صفهای pull به مستندات مراجعه کنید. همچنین برای گزینههای دیگر به صفحه مرجع queue.yaml مراجعه کنید.
این فایل را جدا از برنامه خود مستقر کنید. شما همچنان gcloud app deploy استفاده خواهید کرد، اما queue.yaml نیز در خط فرمان ارائه خواهید داد:
$ gcloud app deploy queue.yaml Configurations to update: descriptor: [/tmp/mod18-gaepull/queue.yaml] type: [task queues] target project: [my-project] WARNING: Caution: You are updating queue configuration. This will override any changes performed using 'gcloud tasks'. More details at https://cloud.google.com/tasks/docs/queue-yaml Do you want to continue (Y/n)? Updating config [queue]...⠹WARNING: We are using the App Engine app location (us-central1) as the default location. Please use the "--location" flag if you want to use a different location. Updating config [queue]...done. Task queues have been updated. Visit the Cloud Platform Console Task Queues page to view your queues and cron jobs. $
۵. کد برنامه را تغییر دهید
این بخش شامل بهروزرسانی فایلهای زیر است:
-
main.py- استفاده از صفهای pull را به برنامه اصلی اضافه میکند. -
templates/index.html— قالب وب را برای نمایش دادههای جدید بهروزرسانی میکند
واردات و ثابتها
اولین قدم اضافه کردن یک import جدید و چندین ثابت برای پشتیبانی از صفهای pull است:
- یک فایل ایمپورت از کتابخانه Task Queue،
google.appengine.api.taskqueue، اضافه کنید. - سه ثابت اضافه کنید تا از اجاره حداکثر تعداد وظایف pull (
TASKS) به مدت یک ساعت (HOUR) از صف pull ما (QUEUE) پشتیبانی کند. - یک ثابت برای نمایش جدیدترین بازدیدها و همچنین بازدیدکنندگان برتر (
LIMIT) اضافه کنید.
در زیر کد اصلی و نحوه نمایش آن پس از اعمال این بهروزرسانیها آمده است:
قبل از:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
بعد از:
from flask import Flask, render_template, request
from google.appengine.api import taskqueue
from google.appengine.ext import ndb
HOUR = 3600
LIMIT = 10
TASKS = 1000
QNAME = 'pullq'
QUEUE = taskqueue.Queue(QNAME)
app = Flask(__name__)
اضافه کردن یک وظیفه pull (جمعآوری دادهها برای وظیفه و ایجاد وظیفه در صف pull)
مدل داده Visit و همچنین کوئری زدن برای نمایش بازدیدها در fetch_visits() بدون تغییر باقی میماند. تنها تغییر مورد نیاز در این بخش از کد، در store_visit() است. علاوه بر ثبت بازدید، یک وظیفه به صف pull با آدرس IP بازدیدکننده اضافه کنید تا worker بتواند شمارنده بازدیدکننده را افزایش دهد.
قبل از:
class Visit(ndb.Model):
'Visit entity registers visitor IP address & timestamp'
visitor = ndb.StringProperty()
timestamp = ndb.DateTimeProperty(auto_now_add=True)
def store_visit(remote_addr, user_agent):
'create new Visit entity in Datastore'
Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()
def fetch_visits(limit):
'get most recent visits'
return Visit.query().order(-Visit.timestamp).fetch(limit)
بعد از:
class Visit(ndb.Model):
'Visit entity registers visitor IP address & timestamp'
visitor = ndb.StringProperty()
timestamp = ndb.DateTimeProperty(auto_now_add=True)
def store_visit(remote_addr, user_agent):
'create new Visit in Datastore and queue request to bump visitor count'
Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()
QUEUE.add(taskqueue.Task(payload=remote_addr, method='PULL'))
def fetch_visits(limit):
'get most recent visits'
return Visit.query().order(-Visit.timestamp).fetch(limit)
ایجاد مدل داده و تابع پرس و جو برای ردیابی بازدیدکنندگان
یک مدل داده VisitorCount برای ردیابی بازدیدکنندگان اضافه کنید؛ این مدل باید فیلدهایی برای خود visitor و همچنین یک counter عدد صحیح برای ردیابی تعداد بازدیدها داشته باشد. سپس یک تابع جدید (به عنوان جایگزین، میتواند یک classmethod پایتون باشد) به نام fetch_counts() اضافه کنید تا بازدیدکنندگان برتر را به ترتیب از بیشترین به کمترین جستجو کرده و برگرداند. کلاس و تابع را درست زیر بدنه fetch_visits() اضافه کنید:
class VisitorCount(ndb.Model):
visitor = ndb.StringProperty(repeated=False, required=True)
counter = ndb.IntegerProperty()
def fetch_counts(limit):
'get top visitors'
return VisitCount.query().order(-VisitCount.counter).fetch(limit)
اضافه کردن کد کارگر
یک تابع جدید log_visitors() برای ثبت بازدیدکنندگان از طریق یک درخواست GET به /log اضافه کنید. این تابع از یک دیکشنری/هش برای ردیابی جدیدترین تعداد بازدیدکنندگان استفاده میکند و تا حد امکان وظایف زیادی را برای یک ساعت اجاره میکند. برای هر وظیفه، تمام بازدیدهای یک بازدیدکننده را شمارش میکند. با در دست داشتن این شمارشها، برنامه سپس تمام موجودیتهای VisitorCount مربوطه را که از قبل در Datastore وجود دارند، بهروزرسانی میکند یا در صورت نیاز موجودیتهای جدیدی ایجاد میکند. در مرحله آخر، یک پیام متنی ساده برمیگرداند که نشان میدهد از بین وظایف پردازش شده، چند بازدیدکننده ثبت شدهاند. این تابع را درست زیر fetch_counts() به main.py اضافه کنید:
@app.route('/log')
def log_visitors():
'worker processes recent visitor counts and updates them in Datastore'
# tally recent visitor counts from queue then delete those tasks
tallies = {}
tasks = QUEUE.lease_tasks(HOUR, TASKS)
for task in tasks:
visitor = task.payload
tallies[visitor] = tallies.get(visitor, 0) + 1
if tasks:
QUEUE.delete_tasks(tasks)
# increment those counts in Datastore and return
for visitor in tallies:
counter = VisitorCount.query(VisitorCount.visitor == visitor).get()
if not counter:
counter = VisitorCount(visitor=visitor, counter=0)
counter.put()
counter.counter += tallies[visitor]
counter.put()
return 'DONE (with %d task[s] logging %d visitor[s])\r\n' % (
len(tasks), len(tallies))
بهروزرسانی کنترلکننده اصلی با دادههای نمایشی جدید
برای نمایش بازدیدکنندگان برتر، تابع root() را بهروزرسانی کنید تا تابع fetch_counts() فراخوانی کند. علاوه بر این، قالب بهروزرسانی میشود تا تعداد بازدیدکنندگان برتر و جدیدترین بازدیدها را نشان دهد. تعداد بازدیدکنندگان را به همراه جدیدترین بازدیدها از فراخوانی تابع fetch_visits() بستهبندی کنید و آن را در یک context واحد قرار دهید تا به قالب وب منتقل شود. در زیر کد قبل و بعد از اعمال این تغییر آمده است:
قبل از:
@app.route('/')
def root():
'main application (GET) handler'
store_visit(request.remote_addr, request.user_agent)
visits = fetch_visits(10)
return render_template('index.html', visits=visits)
بعد از:
@app.route('/')
def root():
'main application (GET) handler'
store_visit(request.remote_addr, request.user_agent)
context = {
'limit': LIMIT,
'visits': fetch_visits(LIMIT),
'counts': fetch_counts(LIMIT),
}
return render_template('index.html', **context)
اینها همه تغییرات مورد نیاز main.py هستند، و در اینجا یک نمایش تصویری از این بهروزرسانیها برای اهداف توضیحی آورده شده است تا ایده کلی از تغییراتی که در main.py ایجاد میکنید، به شما ارائه دهد:

قالب وب را با دادههای نمایشی جدید بهروزرسانی کنید
templates/index.html برای نمایش بازدیدکنندگان برتر علاوه بر بار داده معمول جدیدترین بازدیدکنندگان، نیاز به بهروزرسانی دارد. بازدیدکنندگان برتر و تعداد آنها را در جدولی در بالای صفحه قرار دهید و مانند قبل به رندر کردن جدیدترین بازدیدها ادامه دهید. تنها تغییر دیگر، تعیین عدد نمایش داده شده از طریق متغیر limit به جای کدنویسی دقیق عدد است. در اینجا بهروزرسانیهایی که باید در قالب وب خود انجام دهید، آورده شده است:
قبل از:
<!doctype html>
<html>
<head>
<title>VisitMe Example</title>
<body>
<h1>VisitMe example</h1>
<h3>Last 10 visits</h3>
<ul>
{% for visit in visits %}
<li>{{ visit.timestamp.ctime() }} from {{ visit.visitor }}</li>
{% endfor %}
</ul>
بعد از:
<!doctype html>
<html>
<head>
<title>VisitMe Example</title>
<body>
<h1>VisitMe example</h1>
<h3>Top {{ limit }} visitors</h3>
<table border=1 cellspacing=0 cellpadding=2>
<tr><th>Visitor</th><th>Visits</th></tr>
{% for count in counts %}
<tr><td>{{ count.visitor|e }}</td><td align="center">{{ count.counter }}</td></tr>
{% endfor %}
</table>
<h3>Last {{ limit }} visits</h3>
<ul>
{% for visit in visits %}
<li>{{ visit.timestamp.ctime() }} from {{ visit.visitor }}</li>
{% endfor %}
</ul>
این پایان تغییرات لازم است که استفاده از وظایف کشیدن صف وظایف App Engine را به برنامه نمونه ماژول 1 اضافه میکند. اکنون دایرکتوری شما نشاندهنده برنامه نمونه ماژول 18 است و باید شامل این فایلها باشد:
$ ls README.md appengine_config.py queue.yaml templates app.yaml main.py requirements.txt
۶. خلاصه/پاکسازی
این بخش، این آزمایشگاه کد را با استقرار برنامه، تأیید عملکرد آن طبق برنامه و در هر خروجی منعکسشده، به پایان میرساند. worker را جداگانه اجرا کنید تا تعداد بازدیدکنندگان را پردازش کند. پس از اعتبارسنجی برنامه، مراحل پاکسازی را انجام دهید و مراحل بعدی را در نظر بگیرید.
استقرار و تأیید برنامه
مطمئن شوید که صف دریافت خود را از قبل تنظیم کردهاید، همانطور که در ابتدای این کد با gcloud app deploy queue.yaml انجام دادیم. اگر این کار تکمیل شده و برنامه نمونه شما آماده استفاده است، برنامه خود را با gcloud app deploy مستقر کنید. خروجی باید مشابه برنامه ماژول ۱ باشد، با این تفاوت که اکنون یک جدول "بازدیدکنندگان برتر" در بالا دارد:

در حالی که ظاهر وب بهروزرسانیشده، بازدیدکنندگان برتر و جدیدترین بازدیدها را نمایش میدهد، توجه داشته باشید که تعداد بازدیدکنندگان شامل این بازدید نمیشود . برنامه تعداد بازدیدکنندگان قبلی را نمایش میدهد و در عین حال یک وظیفه جدید را حذف میکند که تعداد این بازدیدکننده را در صف انتظار افزایش میدهد، وظیفهای که منتظر پردازش است.
شما میتوانید این وظیفه را با فراخوانی /log به روشهای مختلفی اجرا کنید:
- یک سرویس بکاند موتور برنامه (App Engine)
- یک
cronجاب - یک مرورگر وب
- یک درخواست HTTP خط فرمان (
curl،wgetو غیره)
برای مثال، اگر از curl برای ارسال یک درخواست GET به /log استفاده کنید، با توجه به اینکه PROJECT_ID خود را ارائه دادهاید، خروجی شما به این شکل خواهد بود:
$ curl https://PROJECT_ID.appspot.com/log DONE (with 1 task[s] logging 1 visitor[s])
تعداد بهروزرسانیشده سپس در بازدید بعدی از وبسایت اعمال خواهد شد. همین!
تبریک میگویم که این آزمایشگاه کدنویسی را برای افزودن موفقیتآمیز سرویس صف کشیدن وظیفه App Engine به برنامه نمونه به پایان رساندید. اکنون برنامه برای مهاجرت به Cloud Pub/Sub، Cloud NDB و پایتون ۳ در ماژول ۱۹ آماده است.
تمیز کردن
عمومی
اگر فعلاً کارتان تمام است، توصیه میکنیم برنامه App Engine خود را غیرفعال کنید تا از پرداخت هزینه جلوگیری شود. با این حال، اگر میخواهید بیشتر آزمایش یا تجربه کنید، پلتفرم App Engine سهمیه رایگان دارد و بنابراین تا زمانی که از آن سطح استفاده تجاوز نکنید، نباید هزینهای از شما دریافت شود. این هزینه برای محاسبات است، اما ممکن است برای سرویسهای مربوطه App Engine نیز هزینههایی وجود داشته باشد، بنابراین برای اطلاعات بیشتر به صفحه قیمتگذاری آن مراجعه کنید. اگر این مهاجرت شامل سایر سرویسهای ابری باشد، هزینه آنها جداگانه محاسبه میشود. در هر صورت، در صورت لزوم، به بخش "ویژه این codelab" در زیر مراجعه کنید.
برای روشن شدن کامل موضوع، استقرار در یک پلتفرم محاسباتی بدون سرور Google Cloud مانند App Engine هزینههای ساخت و ذخیرهسازی کمی را متحمل میشود. Cloud Build نیز مانند Cloud Storage سهمیه رایگان خود را دارد. ذخیرهسازی آن تصویر مقداری از آن سهمیه را مصرف میکند. با این حال، ممکن است در منطقهای زندگی کنید که چنین ردیف رایگانی ندارد، بنابراین برای به حداقل رساندن هزینههای احتمالی، از میزان استفاده از فضای ذخیرهسازی خود آگاه باشید. «پوشههای» خاص Cloud Storage که باید بررسی کنید عبارتند از:
-
console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/images -
console.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com - لینکهای ذخیرهسازی بالا به
PROJECT_IDو *LOC*ation شما بستگی دارند، برای مثال، اگر برنامه شما در ایالات متحده میزبانی میشود، "us" خواهد بود.
از طرف دیگر، اگر قصد ندارید با این برنامه یا سایر آزمایشگاههای کد مهاجرت مرتبط ادامه دهید و میخواهید همه چیز را به طور کامل حذف کنید، پروژه خود را ببندید .
مخصوص این آزمایشگاه کد
سرویسهای ذکر شده در زیر مختص این codelab هستند. برای اطلاعات بیشتر به مستندات هر محصول مراجعه کنید:
- سرویس App Engine Task Queue هیچ هزینه اضافی برای سرویسهای همراه قدیمی مانند Task Queue، طبق صفحه قیمتگذاری، متحمل نمیشود.
- سرویس App Engine Datastore توسط Cloud Datastore (Cloud Firestore در حالت Datastore) ارائه میشود که یک نسخه رایگان نیز دارد؛ برای اطلاعات بیشتر به صفحه قیمتگذاری آن مراجعه کنید.
مراحل بعدی
در این «مهاجرت»، شما با افزودن پشتیبانی برای ردیابی بازدیدکنندگان، استفاده از صف ارسال Task Queue را به برنامه نمونه ماژول ۱ اضافه کردید و در نتیجه برنامه نمونه ماژول ۱۸ را پیادهسازی کردید. در مهاجرت بعدی، وظایف دریافت App Engine را به Cloud Pub/Sub ارتقا خواهید داد. از اواخر سال ۲۰۲۱، کاربران دیگر نیازی به مهاجرت به Cloud Pub/Sub هنگام ارتقا به پایتون ۳ ندارند. در بخش بعدی درباره این موضوع بیشتر بخوانید.
برای مهاجرت به Cloud Pub/Sub، به ماژول ۱۹ codelab مراجعه کنید. فراتر از آن، مهاجرتهای دیگری نیز باید در نظر گرفته شوند، مانند Cloud Datastore، Cloud Memorystore، Cloud Storage یا Cloud Tasks (صفهای ارسال). همچنین مهاجرتهای بین محصولی به Cloud Run و Cloud Functions نیز وجود دارد. به تمام محتوای Serverless Migration Station (آزمایشگاههای کد، ویدیوها، کد منبع [در صورت وجود]) میتوان در مخزن متنباز آن دسترسی پیدا کرد.
۷. مهاجرت به پایتون ۳
در پاییز ۲۰۲۱، تیم App Engine پشتیبانی از بسیاری از سرویسهای همراه را به Runtimeهای نسل دوم (که Runtime نسل اول دارند) گسترش داد . در نتیجه، دیگر نیازی نیست هنگام انتقال برنامه خود به پایتون ۳، از سرویسهای همراه مانند App Engine Task Queue به سرویسهای مستقل Cloud یا شخص ثالث مانند Cloud Pub/Sub مهاجرت کنید. به عبارت دیگر، میتوانید به استفاده از Task Queue در برنامههای App Engine پایتون ۳ ادامه دهید، مادامی که کد را برای دسترسی به سرویسهای همراه از Runtimeهای نسل بعدی، بهروزرسانی کنید .
میتوانید در مورد نحوه انتقال استفاده از سرویسهای همراه به پایتون ۳ در codelab ماژول ۱۷ و ویدیوی مربوطه اطلاعات بیشتری کسب کنید. اگرچه این موضوع خارج از محدوده ماژول ۱۸ است، اما لینکهای زیر نسخههای پایتون ۳ از برنامه ماژول ۱ هستند که به پایتون ۳ منتقل شدهاند و هنوز از App Engine NDB استفاده میکنند. (در مقطعی، نسخه پایتون ۳ از برنامه ماژول ۱۸ نیز در دسترس قرار خواهد گرفت.)
۸. منابع اضافی
در زیر منابع بیشتری برای توسعهدهندگان جهت بررسی بیشتر این ماژول مهاجرت یا ماژولهای مرتبط و همچنین محصولات مرتبط فهرست شده است. این منابع شامل مکانهایی برای ارائه بازخورد در مورد این محتوا، لینکهایی به کد و مستندات مختلفی است که ممکن است برای شما مفید باشند.
مشکلات/بازخوردهای Codelab
اگر در این آزمایشگاه کد مشکلی پیدا کردید، لطفاً قبل از ثبت، ابتدا مشکل خود را جستجو کنید. لینکهای جستجو و ایجاد مشکلات جدید:
منابع مهاجرت
لینکهای پوشههای مخزن ماژول ۱ (START) و ماژول ۱۸ (FINISH) را میتوانید در جدول زیر پیدا کنید. همچنین میتوانید از مخزن تمام مهاجرتهای Codelab مربوط به App Engine به آنها دسترسی داشته باشید؛ آن را کلون کنید یا یک فایل ZIP دانلود کنید.
کدلب | پایتون ۲ | پایتون ۳ |
کد (در این آموزش نمایش داده نشده است) | ||
ماژول ۱۸ (این آزمایشگاه کد) | ناموجود |
مراجع آنلاین
منابع مرتبط با این آموزش در زیر آمده است:
صف وظایف موتور برنامه
- مرور کلی صف وظایف موتور برنامه
- مرور کلی صفهای pull در صف وظیفه موتور برنامه
- موتور برنامه، صف وظایف، صف کشیدن، نمونه برنامه کامل
- ایجاد صفهای pull برای Task Queue
- ویدیوی شروع صف انتظار کنفرانس گوگل آی/او ۲۰۱۱ ( نمونه برنامه Votelator )
- مرجع
queue.yaml -
queue.yamlدر مقابل Cloud Tasks - صفها را به راهنمای مهاجرت Pub/Sub بکشید
- نمونه مستندات صف وظایف موتور برنامه برای کشیدن صفها به Cloud Pub/Sub
پلتفرم موتور برنامه
مستندات موتور برنامه
موتور برنامه پایتون ۲ (محیط استاندارد) در زمان اجرا
موتور برنامه پایتون ۳ (محیط استاندارد) در زمان اجرا
تفاوتهای بین زمانهای اجرای موتور برنامه پایتون ۲ و ۳ (محیط استاندارد)
راهنمای مهاجرت موتور برنامه پایتون ۲ به ۳ (محیط استاندارد)
اطلاعات قیمتگذاری و سهمیهبندی موتور برنامه
راهاندازی پلتفرم نسل دوم App Engine (۲۰۱۸)
پشتیبانی بلندمدت از رانتایمهای قدیمی
نمونههای مهاجرت مستندات
سایر اطلاعات ابری
- پایتون در پلتفرم ابری گوگل
- کتابخانههای کلاینت پایتون گوگل کلود
- سطح «همیشه رایگان» گوگل کلود
- کیت توسعه نرمافزار گوگل کلود (ابزار خط فرمان
gcloud) - تمام مستندات گوگل کلود
ویدیوها
- ایستگاه مهاجرت بدون سرور
- سفرهای اکتشافی بدون سرور
- مشترک شدن در فناوری ابری گوگل
- مشترک شدن در توسعهدهندگان گوگل
مجوز
این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.