flask-logo

พัฒนา API ด้วย Flask Application

Flask คือ python webframe work เรียนรู้ได้ง่าย Flask object ที่ทำการ implement WSGI application และมีประสิทธิภาพ มาเรียนรู้ที่จะเริ่มต้นการพัฒนา ไปดูตัวอย่าง ได้ที่ http://flask.pocoo.org/
ติดตั้ง Flask ด้วย pip

Flask application เลือกสร้างได้ สองแบบ
1 สร้าง app.py ด้วยการสร้าง module (ไฟล์ที่มีนามสกุล py) เหมาะกับ application ขนาดเล็ ไม่ได้มีความซับซ้อน

2 สร้าง app.py ด้วยการสร้าง python package (Directory ที่มีไฟล์ __init__.py)

มาดูตัวอย่างแบบง่ายๆๆ ก่อนครับ ให้สร้าง python module

วิธีการ Run


class flask.Flask(import_name, static_path=None, static_url_path=None, static_folder='static', template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None)

import_name จะแทนค่าด้วย __name__ เมื่อมีการเรียก Flask() constructor จะได้รู้ว่าเป็นของ Application อะไร

แต่หากเราได้ประกาศ application ไว้ใน application/app.py สามารถมีทางเลือกที่จะเรียก Flask contructor ได้ดังนี้

parameter ที่สามารถกำหนดให้แก่ constructor

import_name ชื่อ application package
static_url_path path ของ static file สามารถกำหนดได้แต่หากไม่มีการกำหนดจะใช้ค่า Default คือ  static_folder
static_folder  folder  ที่ใช้สำหรับ static file ที่จะใช้สำหรับ static_url_path โดยค่า default คือ static  folder ที่ root ของ application
 template_folder  folder ที่ทำหน้าที่เก็บ  templatesโดยค่า default คือ templates folder ที่ root application
root_path Flask  กำหนดให้เอง อัตโนมัติ เพื่อกำหนด root path ของ Application

คราวนี้ลองมาสร้าง flask app ใน application/__init__.py  อ้างอิงโครงสร้างแบบที่  2 จากด้านบน แต่ การ start application  จะมีสร้าง file ใหม่ที่จะใช้สำหรับการ start  ชื่อ <code>setup.py</code> ไว้ ดังโครงสร้าง

คราวนี้ก็มาสร้าง file ดังนี้
1) file __init__.py สำหรับ flask application

2) views.py
1) file views.py สำหรับ กำหนด route

Circular imports
ในกรณีที่ views.py มีการ import myapp และ ใน __init__.py ก็มีการ import myapp.views แสดงว่า module มีความสัมพันธ์ซึ่งกันและกัน ที่จริงเราไม่ได้ใช้งาน views ที่เรา import เข้ามาใน __init__.py เพียงต้องการที่จะทำให้มั่นใจว่า module จะต้อง import เข้ามา และเราจะวางไว้ ล่างสุดของ file

3 run app

Flask configuration
สร้าง file config ชื่อว่า config.py โดย เป็นfile ที่ใช้สำหรับการ ตั้งค่า configuration ค่า ตัวแปรใน Config ใช้เป็นอักษรตัวใหญ่

โหลด config ใน application

Run App

Deep Learning: Tensorflow

เรียนรู้ ใช้งาน Google’s Deep Learning Framework ที่ได้รับนิยม คือ TensorFlow ผ่านภาษา python3 เพื่อเรียนรู้ในการแก้ปัญหาต่างๆ ด้วยวิธีการวิเคราะห็แบบ BigData นำมาผ่าน Machine Learning เพื่อให้เรียนรู้ ข้อมูล (algorithms) ในรูปแบบที่เป็น multi-layer neural networks ผลลัพท์ที่ได้ คือ Data Model ที่จะนำไปใช้งานต่อไป

จากรูปจะสังเกตุได้ถึงกระบวนการของ Training Pipeline ที่ tensorflow ได้นำมาใช้วิเคราะห์ ผ่านทาง neutron network ที่จะให้คอมพิวเตอร์ สามารถเรียนรู้ข้อมูลต่างๆ ได้ด้วยตนเอง ในการเริ่มต้นการเรียนรู้ จะเริ่มต้นด้วยการใช้งานผ่านทาง ภาษา python ที่จะมีความเรียบง่าย และมีประสิทธิภาพ

Architecture Tensorflow

มีขั้นตอนการติดตั้งดังนี้

1). ติดตั้ง จะเป็นการติดตั้งผ่านทาง pip (package manager by python)
on mac

on linux ภายใต้ virtual environment ของ python

Bottle: Python web Framework ตอนที่  1

Bottle คือ WSGI web-framework สำหรับภาษา python มีคุณสมบัติโดดเด่นที่มีความเร็ว และใช้งานได้ง่าย ไม่จำเป็นต้องมีการติดตั้ง  Dependency เพิ่มเติม เนื่องจาก ทั้งหมดเป็น Standard Library ของ  python เอง

1). ติดตั้งด้วยคำสั่ง pip,pip3 แล้วแต่ว่าจะใช้ python version อะไร

เปิด   terminal   และพิมพ์คำสั่งเพื่อการติดตั้ง โดยให้พิมพ์เฉพาะ คำสั่งที่อยู่หลังเครื่องหมาย “$” เท่านั้น เพราะบรรทัดที่ที่ไม่มีเครื่องหมาย “$” จะเป็นผลลัพท์ที่ได้มาเท่านั้น เริ่มต้นให้สร้าง project folder  ชื่อ  bottle และสร้าง virtualenv ใน  project folder

2). สร้าง ไฟล์ชื่อว่า app.py  ดังนี้


3)  สตาร์ท  webserver

เพิ่มเติมการใช้งาน ร่วมกับ Docker
–  สร้างfile Dockerfile สำหรับ container
– สร้างfile Docker-compose.yml

4) สร้าง Dockerfile ใน project

5) สร้าง .dockerignore

6) สร้าง docker-compose.yml

– version กำหนด ใช้ version 3
– services ส่วนที่กำหนด service ที่จะนำไปสร้าง containers (redis,web)
– web service จะ service descriptor ดังนี้
– build . (จุด) จะอ่านไฟล์ Dockerfile ที่สร้างไว้ก่อนหน้านี้
– command จะทำการ override  CMD ใน Dockerfile
– volumes ชี้ไปยัง volume path
– ports กำหนด port map จาก host ไปยัง container
– depends_on กำหนด dependency ระหว่าง container ผลคือ จะต้องมีการ start redis containner ก่อน webcontainer

7). เริ่มต้นขบวนการ build ด้วยคำสั่ง docker build

8). ตรวจสอบ ด้วยคำสั่ง docker images
9). สตาร์ท ด้วยคำสั่ง docker-compose up
10). ยกเลิกการทดสอบ
python3

ติดตั้ง python 3 จาก source code

การติดตั้ง python3 จาก  source code  จะทำติดตั้ง โดยจะต้อง ไป ทำการ download source code จาก www.python.org โดย  เวอชั่นที่ทำการติดตั้งคือ 3.6.3 เนื่องจากการ compile นั้นจะต้องทำการติดตั้ง gcc ก่อน