Flask的配置2拆包處理

2021-09-25 07:45:41 字數 3142 閱讀 6776

manage.py檔案

# conding:utf-8

from flask_script import manager # 匯入指令碼

from flask_migrate import migrate, migratecommand # 管理models

manager.add_command("db", migratecommand) # 新增資料庫的命令

if __name__ == '__main__':

manager.run()

config.py
import redis

class config(object):

"""flask的配置"""

secret_key = "eqweqwnjewhn**k34n423nyh56nkewk" # 配置金鑰

# 配置redis鏈結的主機和埠號

redis_host = "127.0.0.1"

redis_port = 6379

# mysql資料庫的配置,先在資料庫新建database

sqlalchemy_database_uri = "mysql://root:@localhost:3306/ihome"

sqlalchemy_track_modifications = true

session_type = "redis" # 儲存session的型別為redis

session_redis = redis.strictredis(host=redis_port, port=redis_port) # 測試專案使用同一臺redis伺服器

session_use_signer = true # 對cookie中的session_id做混淆處理

permanent_session_lifetime = 86400 # 設定session的有效期,時間為一天

class developmentconfig(config):

"""開發模式的配置"""

debug = true # debug為true

class produceconfig(config):

"""生產模式"""

pass

#配置對映

config_map =

ihome下的 init.py

from flask import flask

from config import config_map

from flask_sqlalchemy import sqlalchemy # 匯入和flask框架相關的mysql資料庫

import redis, logging # 匯入redis資料庫,作為快取資料庫 匯入日誌logging

from flask_session import session # 使用flask擴充的session

from flask_wtf import csrfprotect

from logging.handlers import rotatingfilehandler

db = sqlalchemy()

redis_store = none

# csrf保護

csrf = csrfprotect()

# log記錄

def setup_log():

"""配置日誌"""

# 級別從高到低

# logging.error() # 錯誤級別

# logging.warn() # 警告級別

# logging.info() # 訊息級別

# logging.debug() # 除錯級別

# 設定日誌的記錄等級

logging.basicconfig(level=logging.debug) # 除錯debug級

# 建立日誌記錄器,指明日誌儲存的路徑、每個日誌檔案的最大大小、儲存的日誌檔案個數上限,最多保留10個檔案

file_log_handler = rotatingfilehandler("logs/log", maxbytes=1024*1024*100, backupcount=10)

# 建立日誌記錄的格式 日誌等級 輸入日誌資訊的檔名 行數 日誌資訊

formatter = logging.formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')

# 為剛建立的日誌記錄器設定日誌記錄格式

file_log_handler.setformatter(formatter)

logging.getlogger().addhandler(file_log_handler)

""":param config_name: str型別 可選

:return:

"""# 選擇不同環境的config

config_type = config_map.get(config_name)

# 註冊配置

# 全域性變數宣告

global redis_store

# 建立redis鏈結物件

redis_store = redis.strictredis(host=config_type.redis_host, port=config_type.redis_port) # host為鏈結的主機,port為鏈結的埠號,在config中配置

from ihome.api_v1 import api # 放在函式中,解決迴圈匯入的問題

# 註冊藍圖

# csrf保護

# 配置session,將session資料儲存在redis中

藍圖設計

# 測試使用的demo,使用flask中的藍圖

from flask import blueprint

# 建立藍圖物件

api = blueprint('api_1_0', __name__)

# 讓藍圖知道demo的存在

from . import demo

from . import api

@api.route('/')

def hello_world():

return 'hello world!'

TCP粘包的拆包處理

因為tcp是流式處理的,所以包沒有邊界,必須設計乙個包頭,裡面表示包的長度 一般用位元組表示 根據這個來逐個拆包。如果對於傳送 接收頻率不高的話,一般也就不做拆包處理了,因為不大可能有粘包現象。以下是粘包和拆包的分析 用qt的tcpsocket讀出的資料來拆 1 m imp m thread boo...

tcp粘包和拆包的處理方案

隨著智慧型硬體越來越流行,很多後端開發人員都有可能接觸到socket程式設計。而很多情況下,伺服器與端上需要保證資料的有序,穩定到達,自然而然就會選擇基於tcp ip協議的socekt開發。開發過程中,經常會遇到tcp粘包,拆包的問題,本文將從產生原因,和解決方案以及workerman是如何處理粘包...

tcp粘包和拆包的處理方案

隨著智慧型硬體越來越流行,很多後端開發人員都有可能接觸到socket程式設計。而很多情況下,伺服器與端上需要保證資料的有序,穩定到達,自然而然就會選擇基於tcp ip協議的socekt開發。開發過程中,經常會遇到tcp粘包,拆包的問題,本文將從產生原因,和解決方案以及workerman是如何處理粘包...