از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
استقرار یک برنامه Flask در Heroku
سرفصلهای مطلب
معرفی
در این آموزش روش استقرار یک برنامه Flask در Heroku را خواهید آموخت. این برنامه می تواند به سادگی یک برنامه “Hello World” برای یک پلت فرم نظارت بر رسانه های اجتماعی باشد!
امروزه هیچ کسب و کاری وجود ندارد که اپلیکیشن وب نداشته باشد تا بتواند به مخاطبان بیشتری دست یابد یا شاید خدمات خود را از طریق یک پورتال آنلاین ارائه دهد.
امروز می خواهید یاد بگیرید که چگونه یک API با استفاده از Flask به عنوان مطالعه موردی برای روش استقرار برنامه خود بسازید روی هیروکو.
ساخت REST API با Flask
در فهرست پروژه خود، بیایید با ایجاد یک virtualenv شروع کنیم:
$ python -m venv venv/
و بیایید آن را با source
دستور:
$ source venv/bin/activate
سپس، بیایید استفاده کنیم pip
برای نصب کتابخانه هایی که قرار است استفاده کنیم – flask
برای ساخت اپلیکیشن و gunicorn
به عنوان سرور ما:
$ pip install flask
$ pip install gunicorn
برنامه ما یک API ساده خواهد بود که یک نام دریافت می کند و پیام خوش آمدگویی را برمی گرداند:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/getmsg/', methods=('GET'))
def respond():
name = request.args.get("name", None)
print(f"got name {name}")
response = {}
if not name:
response("ERROR") = "no name found, please send a name."
elif str(name).isdigit():
response("ERROR") = "name can't be numeric."
else:
response("MESSAGE") = f"Welcome {name} to our awesome platform!!"
return jsonify(response)
@app.route('/post/', methods=('POST'))
def post_something():
param = request.form.get('name')
print(param)
if param:
return jsonify({
"Message": f"Welcome {name} to our awesome platform!!",
"METHOD" : "POST"
})
else:
return jsonify({
"ERROR": "no name found, please send a name."
})
@app.route('/')
def index():
return "<h1>Welcome to our server !!</h1>"
if __name__ == '__main__':
app.run(threaded=True, port=5000)
برای آزمایش برنامه خود به صورت محلی، بیایید ضربه را بزنیم http://127.0.0.1:5000/ نقطه پایانی اگر همه چیز خوب است، باید با یک پیام خوش آمد به ما خوشامد گفت:
همچنین می توانیم نامی را به عنوان پارامتر ارسال کنیم، مانند http://localhost:5000/getmsg/?name=Mark
:
{"MESSAGE":"Welcome Mark to our awesome platform!!"}
در حالی که برنامه ما آماده است، اجازه دهید آن را در آن مستقر کنیم هروکو.
هروکو
هروکو یکی از اولین پلتفرم های ابری به عنوان سرویس (PaaS) است و از چندین زبان پشتیبانی می کند – Ruby، جاوا، Node.js، Scala، Clojure، Python، PHP و Go.
اولین کاری که باید انجام دهیم این است که تعریف کنیم برنامه ما از چه کتابخانه هایی استفاده می کند. به این ترتیب، Heroku می داند که کدام یک را برای ما فراهم کند، مشابه روش نصب آنها به صورت محلی هنگام توسعه برنامه.
برای رسیدن به این هدف، ما نیاز به ایجاد یک requirements.txt
فایل با تمام ماژول ها:
$ pip freeze > requirements.txt
به این ترتیب ما به یک نتیجه می رسیم requirements.txt
فایلی که شامل کتابخانه های مورد استفاده ما و نسخه های آنها است:
Click==7.0
Flask==1.1.1
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
Werkzeug==0.15.6
توجه داشته باشید: یکی از اشتباهات رایج، الزامات غلط املایی است، زمانی که کد خود را برای ساعت ها اشکال زدایی می کنید و متوجه می شوید که برنامه اجرا نمی شود زیرا سرور ماژول ها را دانلود نکرده است، واقعاً دردناک است. تنها راه هروکو برای شناخت ماژول هایی که استفاده می کنید اضافه کردن آنها به ماژول ها است requirements.txt
فایل، پس مراقب باشید!
برای اینکه Heroku بتواند برنامه ما را همانطور که باید اجرا کند، باید مجموعه ای از فرآیندها/فرمان ها را تعریف کنیم که باید از قبل اجرا شود. این دستورات در Procfile
:
web: gunicorn app:app
را web
دستور به Heroku میگوید تا با استفاده از یک وب سرور برای برنامه راهاندازی کند gunicorn
. از آنجایی که برنامه ما نامیده می شود app.py
، ما تنظیم کرده ایم app
نام برای بودن app
همچنین.
اکانت هیروکو
در حال حاضر، ما باید یک حساب کاربری Heroku ایجاد کنید.
هنگامی که از راه خارج شد، روی داشبورد را انتخاب کنید جدید -> برنامه جدید ایجاد کنید:
یک نام برای برنامه انتخاب کنید و منطقه ای را که می خواهید انتخاب کنید host آی تی:
پس از ایجاد برنامه روی Heroku، ما آماده استقرار آن به صورت آنلاین هستیم.
Git
برای آپلود کد خود، از Git استفاده می کنیم. ابتدا بیایید یک مخزن git بسازیم:
$ git init .
و حالا بیایید فایل های خود را اضافه کنیم و commit
:
$ git add app.py Procfile requirements.txt
$ git commit -m "first commit"
استقرار برنامه در Heroku
برای اجرای نهایی برنامه، باید آن را نصب کنیم Heroku CLI که با آن دستورات مربوط به Heroku را اجرا خواهیم کرد. بیایید با استفاده از اطلاعات کاربری خود با اجرای دستور وارد حساب کاربری خود شویم:
$ heroku login -i
یا اگر دستور زیر را اجرا کنیم، میتوانیم با استفاده از مرورگر وارد شوید:
$ heroku login
در این مرحله، هنگام ورود به سیستم، باید مخزن خود را به مخزن راه دور اضافه کنیم:
$ heroku git:remote -a {your-project-name}
حتما تعویض کنید {your-project-name}
با نام واقعی پروژه خود که در مرحله قبل انتخاب کرده اید.
و با انجام این کار، بیایید پروژه را با فشار دادن آن به Heroku آپلود کنیم:
$ git push heroku master
یک گزارش پیشرفت طولانی باید ظاهر شود روی شما terminal، به پایان می رسد:
...
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 45.1M
remote: -----> Launching...
remote: Released v4
remote: https://{your-project-name}.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/{your-project-name}.git
ae85864..4e63b46 master -> master
تبریک میگوییم، شما با موفقیت اولین برنامه وب خود را در Heroku آپلود کردید! اکنون زمان آن است که API خود را آزمایش و تأیید کنیم.
تست API
در گزارشی که در نشان داده شده است console شما یک لینک برای درخواست خود پیدا خواهید کرد https://{your-project-name}.herokuapp.com/
، این پیوند را نیز می توانید در زیر پیدا کنید تنظیمات برگه، در دامنه ها و گواهی ها بخش:
با مراجعه به لینک، میتوانیم به اپلیکیشن خود که اکنون آنلاین و عمومی است برسیم:
در صورت وجود هر گونه خطایی، می توانید به گزارش ها دسترسی داشته باشید و از آنجا عیب یابی کنید:
با تایپ URL و افزودن مسیر برای آن، می توانید به صورت دستی برنامه خود را در مرورگر آزمایش کنید /getmsg/
مسیر اگرچه، از آنجایی که برنامه ها بیشتر و بیشتر پیچیده می شوند، توصیه می شود از ابزارهایی مانند استفاده کنید پستچی.
حالا بیایید تست کنیم GET
درخواست به برنامه ما با یک name
پارامتر:
حالا بیایید یک URL را آزمایش کنیم که به هیچ تابعی محدود نشده است، مثلاً /newurl
، با درخواست GET:
همانطور که انتظار می رفت، برنامه Flask ما یک پاسخ 404 را نشان داد.
توجه داشته باشید: می توانید نمای خروجی را تغییر دهید بسیار، خام، و پیش نمایش، که به شما نشان می دهد خروجی در مرورگر شما چگونه به نظر می رسد.
حالا بیایید a را آزمایش کنیم POST
درخواست:
همچنین، بیایید ببینیم در صورت حذف کامل چه اتفاقی میافتد name
پارامتر:
{"ERROR":"no name found, please send a name."}
ما برنامه خود را آزمایش کردیم و تأیید کردیم که همه چیز خوب کار می کند. برای مشاهده تاریخچه سرور خود و درخواست هایی که انجام شده است، می توانید گزارش های سایت خود را از طریق Heroku بررسی کنید:
می توانید اینجا را ببینید POST
درخواستی که ما به خودمون دادیم page /post/
.
همچنین می توانید تاریخچه ساخت اپلیکیشن را مشاهده کنید. علاوه بر این، اگر در حین ساخت مشکلی وجود داشت، می توانید آن را در لاگ پیدا کنید page.
نتیجه
در این مقاله ما یک مثال ساده از ساخت اولین API ساده خود را نشان دادیم روی Heroku با استفاده از Micro Framework Flask. توسعه process همانطور که شما به ساختن برنامه خود ادامه می دهید، یکسان باقی می ماند.
Heroku یک طرح رایگان و برنامه های دانشجویی ارائه می دهد. طرح رایگان محدود است اما برای یک برنامه شروع، POC یا یک پروژه ساده بسیار خوب کار می کند. با این حال، اگر میخواهید برنامه خود را مقیاسبندی کنید، باید یکی از طرحهای موجود را در نظر بگیرید روی سایت از اینجا.
برای اطلاعات بیشتر روی Heroku شما می توانید Heroku را بررسی کنید خود کتابچه راهنمای کاربر.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-20 13:08:05