iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 30
0
Microsoft Azure

Pyhon X 金融分析 X Azure系列 第 30

【Day30】Azure:Python 部署在Azure上

發現 app service並不是最好的選擇,我們還有更好的選擇可以使用。

使用 Azure Functions:
https://docs.microsoft.com/zh-tw/azure/azure-functions/functions-overview


設定環境

首先要準備好:

  • Azure 訂用帳戶
  • Azure Functions Core Tools
  • Visual Stadio Code安裝Azure Functions

直接在VS Code內安裝:
https://ithelp.ithome.com.tw/upload/images/20201008/20103826zfPNGi4igr.png

安裝完畢後,就可以看到旁邊多一個icon:
https://ithelp.ithome.com.tw/upload/images/20201008/20103826ullsEMieNR.png

然後就登入Azure,他會跳轉到網頁中,登入完成後就會告訴我們完成,並可關閉視窗:
https://ithelp.ithome.com.tw/upload/images/20201009/20103826FjJK2m7za9.png

當然還要安裝Azure Functions Core Tools,不安裝的話,執行前會有這樣的錯誤提示:
https://ithelp.ithome.com.tw/upload/images/20201009/20103826X4oJguNxBX.png

建立Python程式

可參考官方教學:2:建立適用於 Azure Functions 的 Python 函式,這邊先不管測試執行,只要看到這個就表示順利完成:
https://ithelp.ithome.com.tw/upload/images/20201009/20103826g6SPDYmx0U.png

建立自己的python程式

這個部分,希望可以定期去抓每天的盤後資訊,所以就以Day16_saveApiStockToDb.py為基準發展。我們會改範本產生的__init.py__這個檔案

import 套件

安裝必要的套件,大部分都是在【Day16】每日資料匯入資料庫看過,不過多了loggingazure.functions,其中logging是方便我們在server端看log,而azure.functions是官方建議import進來的。

import logging
import requests
import pandas
import pyodbc
import datetime
import time
from io import StringIO

import azure.functions as func

建立functions

create_new_headersave_data_to_azure_db是原本就有的function,有變動的地方就只是把print變成logging

建立程式進入點

原則上是跟之前的做法都一樣,只是多了個回傳值,因為我們是http request的方式進來,當然要有個http response回傳,告訴前端處理的狀況。因此我們接收儲存到Azure SQL server的結果,根據這個結果回傳值。

回傳的程式碼就加上:

if r:
  return func.HttpResponse(
    f"{datetime.datetime.now().strftime('%Y-%m-%d')}: stock recored.",status_code=200)
else:
  return func.HttpResponse(
    f"{datetime.datetime.now().strftime('%Y-%m-%d')}: stock recored FAILSE.",status_code=400)

當成功的時候就記錄說成功囉~
https://ithelp.ithome.com.tw/upload/images/20201009/20103826NyZNs1F1Dr.png

然後檢查我們的Azure SQL server是否真的有資料進來,看看是不是今天寫入的:
https://ithelp.ithome.com.tw/upload/images/20201009/20103826SQ5rHxJmDw.png
看來是的,建立時間為:2020-10-08 15:50:59.533,換算成UTC+8就是今天!


後記:

已經第30天,已達標鐵人賽的目標,但是還沒有比較自動化收集資料,後續將會寫到一個段落再結束它!
會以比較沒有壓力的方式進行,這幾天幾乎都忙得不像話XDD
/images/emoticon/emoticon06.gif


上一篇
【Day29】Azure:App service
下一篇
【Day31】Azure:費用雜談
系列文
Pyhon X 金融分析 X Azure31

尚未有邦友留言

立即登入留言