Hướng dẫn python cloud - trăn mây

Hướng dẫn python cloud - trăn mây

Đã đăng vào thg 9 27, 2017 2:54 SA 2 phút đọc 2 phút đọc

Bài hướng dẫn này mình sử dụng microframework Flask làm web app. Những framework khác của Python như Django, Pyramid, Tornado ... có thể làm tương tự. Máy tính client để mình code chạy trên Ubuntu 16.04 cùng với Python 2.7.12.

Chuẩn bị

Trước khi chạy và deploy ứng dụng Python web, bạn cần phải chuẩn bị

  1. Sử dụng Cloud Platform để tạo mới Cloud Platform project. Tạo mới một App Engine application và tất nhiên là enable billing tại: Consle Cloud Google

  2. Cài đặt một số tool cần thiết:

  • Git
  • Google Cloud SDK

Tạo web Flask đơn giản

Ở bài hưởng dẫn này, mình sẽ tạo một web đơn giản. Nó sẽ in ra dòng

Flask==0.12.2
gunicorn==19.7.1
7

Đầu tiên, tạo một thư mục project

Flask==0.12.2
gunicorn==19.7.1
8. Trong thư mực project, ta sẽ tạo lần lượt các file:

  • main.py: chạy web
  • requirements.txt: quản lý lib python
  • app.yaml: cấu hình deploy và chạy code trên Google App Engine

Tạo một file

Flask==0.12.2
gunicorn==19.7.1
9 có nội dung như sau:

import logging

from flask import Flask


app = Flask(__name__)


@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    return 'Hello World!'


@app.errorhandler(500)
def server_error(e):
    logging.exception('An error occurred during a request.')
    return """
    An internal error occurred: 
{}
See logs for full stacktrace. """
.format(e), 500 if __name__ == '__main__': # This is used when running locally. Gunicorn is used to run the # application on Google App Engine. See entrypoint in app.yaml. app.run(host='127.0.0.1', port=8080, debug=True)

Tạo một file

sudo pip install virtualenv
0 để quản lý các gói

Flask==0.12.2
gunicorn==19.7.1

Tiếp theo, bạn chạy thử ứng dụng:

  1. Nếu bạn không có
    sudo pip install virtualenv
    
    1 bạn có thể cài đặt chúng qua pip
sudo pip install virtualenv
  1. Tạo môi trường cô lập và cài đặt các gói cần thiết
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
  1. Chạy thử
python main.py
  1. Trên trình duyệt, gõ địa chỉ:
http://localhost:8080

Hướng dẫn python cloud - trăn mây

Deploy

Trước khi deploy, bạn cần tạo một file

sudo pip install virtualenv
2 để cấu hình việc deploy

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 2

Điểm chú ý ở đây là

sudo pip install virtualenv
3.
sudo pip install virtualenv
4 là tên môi trường mà web app sẽ chạy trên đó. Thông tin cụ thể bạn có thể vào đây: https://cloud.google.com/appengine/docs/flexible/

OK. Tiếp theo là việc deploy.

  1. sudo pip install virtualenv
    
    5 tới thư mục project
    Flask==0.12.2
    gunicorn==19.7.1
    
    8. Sau đó, gõ lệnh deploy:
gcloud app deploy

Sau khi bạn cài đặt xong Google Cloud SDK bạn có thể sử dụng CLI

sudo pip install virtualenv
7 để thực hiện deloy app

  1. Trên browser bạn có thể xem kết quả của bạn tại
    sudo pip install virtualenv
    
    8. Hoặc có thể sử dụng
    sudo pip install virtualenv
    
    7:
gcloud app browse

Đã hoàn thành!!

Điểm mấu chốt của bài hướng dẫn

  • Tạo được project trên Goold App Engine
  • Cài được CLI
    sudo pip install virtualenv
    
    7 tools
  • Có một web app Python: tất nhiên rồi
  • Chú ý cấu hình trên
    sudo pip install virtualenv
    
    2 file.

Chúc bạn thành công !!!

All rights reserved

Ở bài demo lần trước Cloud Pub/sub Demo, mình cũng đã có trình bày cách hoạt động của Cloud PubSub và sử dụng nó từ Web UI và Command Line. Nhưng khi xây dựng ứng dụng cụ thể thì Command Line không phải là sự lựa chọn hiệu quả. Nay chúng ta sẽ tìm hiểu xem cách sử dụng Cloud PubSub trong ngôn ngữ lập trình cụ thể để dễ dàng tích hợp vào ứng dụng của mình. Để hỗ trợ người dùng làm việc với các service của GCP, Google cũng đưa ra một số API cụ thể như:

  • Service API : những service được public ra dưới dạng REST API và RPC API.
  • API Client : những api được đóng gói thành những gói thư viện (libraries) cho từng ngôn ngữ lập trình cụ thể: java,C#, python, php, ruby,..

Trong phạm vi bài viết này, mình xử dụng API Client với ngôn ngữ lập trình là python – version 3.x. . Nếu bạn không quen xài python hoặc muốn thử một ngôn ngữ khác thì có thể xem ở đây.

Bài này cũng dựa trên ý tưởng là từ application – muốn gửi message lên Cloud Pubsub giống giống như cloud pubsub demo nhưng mình sử dụng python để xử lý việc push và pull message.

Hướng dẫn python cloud - trăn mây
Hình 1: Sơ đồ thực hiện.

Theo như Hình 1, thì chúng ta sẽ thực hiện khá nhiều công việc, nhưng nhìn kỹ lại thì mình chỉ thấy 2 cái chính đó là push message và pull message. Vậy mình sẽ có 2 câu hỏi cần giải quyết:Hình 1, thì chúng ta sẽ thực hiện khá nhiều công việc, nhưng nhìn kỹ lại thì mình chỉ thấy 2 cái chính đó là push message và pull message. Vậy mình sẽ có 2 câu hỏi cần giải quyết:

  • Làm thế nào để push message lên pubsub bằng python code?
  • Làm thế nào để pull message từ pubsub về bằng python code?

Bài viết này đa số là coding và trình tự thực hiện như sau:

  • Tạo service account và cấp role có quyền edit cloud pubsub. (hướng dẫn ở đây).
  • Authentication & Authorization. ( Hướng dẫn ở đây).
  • Đọc dữ liệu ( file .csv) và Push từng dòng lên PubSub. Dữ liệu này là dữ liệu bất kỳ miễn sao nội dung của file có định dạng là .csv là ok. ( Do code của mình đọc từ file csv nhé ).
  • Pull dữ liệu về và gửi lại ACK cho PubSub.
  • Kiểm tra kết quả thực hiện.

Cài đặt thư viện

pip install google-auth google-auth-httplib2 google-api-python-client
pip install --upgrade google-cloud-pubsub

Thiết lập một số thông tin cần thiết.

Flask==0.12.2
gunicorn==19.7.1
0

Tạo Sender

Flask==0.12.2
gunicorn==19.7.1
1

Tạo Receiver

Flask==0.12.2
gunicorn==19.7.1
2

Trong đó :

Flask==0.12.2
gunicorn==19.7.1
3

Flask==0.12.2
gunicorn==19.7.1
4

=> chính là bước Authentication & Authorization với google với credentials là file .json chứa thông tin service account . Khi sử dụng Client API của Google đều bắt buộc phải Authentication & Authorization. Do đó, sau khi thực hiện được Authentication & Authorization của ví dụ Cloud Pubsub này thì các bạn vẫn sử dụngcho các dịch vụ khác của Google. Các bạn cũng có thể xem qua các cách để Authentication & Authorization ở đây để lựa chọn cho mình cách phù hợp, Goole khuyến khích sử dụng OAuth 2.0 nhưng quyền quyết định là của bạn.
Khi sử dụng Client API của Google đều bắt buộc phải Authentication & Authorization. Do đó, sau khi thực hiện được Authentication & Authorization của ví dụ Cloud Pubsub này thì các bạn vẫn sử dụng
cho các dịch vụ khác của Google. Các bạn cũng có thể xem qua các cách để Authentication & Authorization ở đây để lựa chọn cho mình cách phù hợp, Goole khuyến khích sử dụng OAuth 2.0 nhưng quyền quyết định là của bạn.

Sender Main Class

Flask==0.12.2
gunicorn==19.7.1
5

Receiver Main Class

Flask==0.12.2
gunicorn==19.7.1
6

Kết quả thực hiện:

Hướng dẫn python cloud - trăn mây
Google Pub/Sub Kết quả Push message.Google Pub/Sub Kết quả Push message.
Hướng dẫn python cloud - trăn mây
Google Pub/Sub Kết quả Push message.

Do Cloud PubSub là bất đồng bộ, do đó bạn để chạy sender để push message hoặc receiver để pull message trước hay sau đều được. Nếu chưa có message để pull thì nó sẽ chờ cho đến khi có message gửi tới thì nó sẽ pull về.

Hy vọng bài viết này giúp chúng ta có cái nhìn mới về Cloud PubSub cũng như cách ứng dụng của nó vào trong các ứng dụng gửi nhận dữ liệu bất đồng bộ và realtime.

Khi thực hành có chỗ nào chưa hiểu, cần support, các bạn hãy liên hệ với các chuyên gia – Cloud Ace Việt Nam – để được hỗ trợ tốt hơn.

Post Views:497 497