python flask项目过程_Python 开发过程遇到的问题
另一方面,也是因為時間原因,沒有事先系統了解 python 的具體內容,所以開發過程中基本都是拿 java 的東西往 python 里面套。
比如:
某個功能用 java 的 ArrayList 可以解決,那 python 中有沒有類似的東西呢?
java 中定義整形用 int i = 0, 那 python 呢?
也正是因為如此,遇到了很多問題。下面就總結一遍。
列一下問題大綱
覺得沒用的就不用往下看了,大概會涉及到 python 語法及 API,redis 模塊,requests 模塊,flask 框架
python 局部變量作用域問題
python 常量定義
python 通過占位符進行字符串替換
python redis 包,get 方法返回值是 byte
requests 庫超時時間設置問題
flask 項目用 debug 模式運行會打印兩遍啟動日志。
flask 項目局域網內無法通過 ip 訪問
具體問題
1. python 函數中變量在 try-catch 塊的作用域問題
先來看 python 中,在 try 里面定義的變量,在 except 仍然可以訪問
try:
i = 1
# 模擬異常
j = 1 / 0
except:
print(i) # 打印結果為 1
而 java 中,直接就編譯不通過
public static void main(String[] args) {
try{
int i = 0;
j = 1/0;
}catch (Exception e) {
System.out.println(i); # 編譯報錯
}
}
2. python 常量定義
python 中沒有明確定義常量的方式,也就是你認為是他就是,不過仍然推薦用大寫方式命名,當然,這種定義方式仍然可以隨時修改‘常量’的值
RETRY_TIMES = 3.14
而 java 中使用 final 關鍵字修飾
final int RETRY_TIMES = 0
3. redis hash 數據類型無法給 field 設置過期時間
這個問題跟 python 沒有關系。
第一次使用 redis hash 數據結構。
首先 redis hash 數據類型 是通過一下方式存儲數據的。
set key fieldname fieldvalue
并且無法通過給 fieldname 設置過期時間,只能給 key 設置過期時間。
4. python 字符串替換
java 中進行字符串替換是通過如下方式:
String s = "hello world";
s.replace("world", "dog");
python 中除了這種方式,還有一種:
str = "hello, {}".format("world")
python redis 模塊,get 方法返回值是 byte
value = my_redis.get("key")
print(value) # b"1234"
5. requests 庫設置超時時間
首先 requests 庫是通過如下方式設置超時時間
# 超時時間是通過元祖的方式傳入的
requests.post(url, data, timeout=(connect_timeout, read_timeout))
# 會自動轉為
如果傳入 timeout=1.0, 會自動轉為下面的形式
requests.post(url, data, timeout=(1.0, 1.0))
6. flask 項目局域網內無法通過 ip 訪問
解決方式: 傳入參數 host="0.0.0.0"
app.run(host="0.0.0.0", port=5001, debug=True, threaded=True)
7. flask項目用 debug 模式啟動會打印兩遍日志
首先來看啟動入口代碼
if __name__ == "__main__":
# 初始化 redis
# 省略部分代碼
app.run(host="0.0.0.0", port=5001, debug=True, threaded=True)
然后以 debug 模式啟動項目, 控制臺輸出以下日志(刪減了部分)
pydev debugger: process 72880 is connecting
Connected to pydev debugger (build 193.6494.30)
2020-03-13 19:27:06 INFO (config.py:60) MainThread - port = 5001
2020-03-13 19:27:06 INFO (config.py:64) MainThread - redis_host = localhost
2020-03-13 19:27:06 INFO (config.py:65) MainThread - redis_port = 6379
2020-03-13 19:27:06 INFO (config.py:66) MainThread - redis_db = 15
2020-03-13 19:27:06 INFO (config.py:67) MainThread - redis_password =
* Serving Flask app "anti-fraud" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5001/ (Press CTRL+C to quit)
* Restarting with stat
pydev debugger: process 72882 is connecting
2020-03-13 19:27:07 INFO (config.py:60) MainThread - port = 5001
2020-03-13 19:27:07 INFO (config.py:64) MainThread - redis_host = localhost
2020-03-13 19:27:07 INFO (config.py:65) MainThread - redis_port = 6379
2020-03-13 19:27:07 INFO (config.py:66) MainThread - redis_db = 15
2020-03-13 19:27:07 INFO (config.py:67) MainThread - redis_password =
可以看到 redis 啟動日志打印了兩遍, 解決方式如下:
# 多加了 use_reloader=False 參數
app.run(host="0.0.0.0", port=5001, debug=True, use_reloader=False, threaded=True)
總結
以上就是對 python 開發過程遇到的問題,沒有難度,純粹是簡單記錄一下。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python flask项目过程_Python 开发过程遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离婚了怎么走出来(怎样做才能从离婚的痛苦
- 下一篇: 路由器ax是什么意思?