وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

استقرار یک برنامه Flask در Heroku

0 10
زمان لازم برای مطالعه: 5 دقیقه


معرفی

در این آموزش روش استقرار یک برنامه 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید