تبدیل Jupyter Notebook به Rest API Endpoint

ژوپیتر نوت‌بوک‌ها (Jupyter notebooks) فوق‌العاده هستن، به ما اجازه می‌دهند که به سرعت و راحتی شروع به بررسی و کد زدن (یا به اصطلاح prototype and experiment) کنیم؛ اما آیا می‌دونستید که می‌تونیم از اون‌ها به عنوان یک Backend استفاده کنیم؟

در این آموزش، می‌بینیم که چطور از یک نوت‌بوک به عنوان یک API ساده استفاده کنیم -مشابه همون‌کاری که Runkit که ابزاری مشابه برای Javascript است انجام می‌دهد- و یک API ساده برای تبدیل درجه به رادیان می‌سازیم؛ فایل این نوت‌بوک در این آدرس در دسترس و همچنین پایین‌تر قابل مشاهده است.

بنابراین، در نهایت ما Endpointای خواهیم داشت که می‌توانیم از اون به صورت زیر استفاده کنیم:

نصب و راه‌اندازی

با فرض اینکه jupyter notebook  را نصب دارید، در ابتدا پکیج kernel_gateway  را به صورت زیر نصب کنید:

سپس با وارد کردن دستور زیر، تنظیمات kernel_gateway  را بسازید:

با وارد کردن این دستور فایل تنظیمات پیش‌فرض در آدرس ذکر شده ساخته می‌شوند. برای آنکه API شما بتواند توسط دیگر سیستم‌ها قابل دسترسی باشد این فایل را مطابق زیر تغییر دهید:

ساختن API

یک نوت‌بوک (برای مثال با نام JNB_endpoint.ipynb) ساخته و در یک سلول پکیج‌های مورد استفاده را import می‌کنیم:

این سلول، در هنگام لود نوت‌بوک تنها یکبار اجرا می‌شود، می‌توانید تمامی initializationهای خود را در این سلول انجام دهید.*

سپس سلولی دیگر مطابق زیر می‌سازیم:

به خط اول توجه کنید، در این خط با استفاده از یک کامنت، برای kernel gateway مشخص کردیم که در چه آدرسی (اینجا convert/) و به چه نوع ریکوئستی (اینجا GET) گوش کند. این سلول با هر ریکوئست GET در آدرس مشخص شده اجرا می‌شود.

در نهایت به صورت زیر نوت‌بوک خود را اجرا کنید:

به همین راحتی ما نوت‌بوک خودمون رو به یک Rest API تبدیل کردیم. حالا اگر یک ریکوئست به Endpointمون که آدرس سرور و پورتی است که در دستور بالا مشخص کردیم (پیش‌فرض 8888:) بفرستیم نتیجه مورد انتظارمون رو می‌بینیم:

* هنگام ساخت نوت‌بوک به ساختن و initialize متغیر REQUEST دقت کنید، اینکار برای آن است که نوت‌بوک ما به صورت عادی قابل اجرا باشد، REQUEST متغیر خاصی است که Kernel Gateway به سلول‌های مربوط به API می‌فرستد. اگر این متغیر تعریف نشده باشد، با اجرای نوت‌بوک با استفاده از دستور بالا مشکلی ایجاد نمی‌کند اما اجرای عادی نوت‌بوک به دلیل تعریف نشدن این متغیر با خطا مواجه می‌شود؛ بنابراین این متغیر را initialize کردیم تا از این خطا جلوگیری کنیم.

نوت‌بوکی که ساختیم در این آدرس قابل دسترسی است و می‌توانید اینجا مشاهده کنید:

منابع

+ وبلاگ OUseful.Info

+ وبلاگ Eliot Andres

فوتر سایت

اسلایدر سایدبار

درباره ما

درباره ما

ما گروهی از دانشجویان رشته کامپیوتر دانشگاه شهید رجایی هستیم که به راهنمایی و تدریس استاد علی‌رضا اخوان‌پور به دنیای یادگیری عمیق پا گذاشتیم و دوست داریم چیزهایی که در این مسیر یادمی‌گیریم رو به اشتراک بذاریم.

شبکه های اجتماعی