python flask项目过程_Python 开发过程遇到的问题
另一方面,也是因為時間原因,沒有事先系統(tǒng)了解 python 的具體內(nèi)容,所以開發(fā)過程中基本都是拿 java 的東西往 python 里面套。
比如:
某個功能用 java 的 ArrayList 可以解決,那 python 中有沒有類似的東西呢?
java 中定義整形用 int i = 0, 那 python 呢?
也正是因為如此,遇到了很多問題。下面就總結(jié)一遍。
列一下問題大綱
覺得沒用的就不用往下看了,大概會涉及到 python 語法及 API,redis 模塊,requests 模塊,flask 框架
python 局部變量作用域問題
python 常量定義
python 通過占位符進行字符串替換
python redis 包,get 方法返回值是 byte
requests 庫超時時間設(shè)置問題
flask 項目用 debug 模式運行會打印兩遍啟動日志。
flask 項目局域網(wǎng)內(nèi)無法通過 ip 訪問
具體問題
1. python 函數(shù)中變量在 try-catch 塊的作用域問題
先來看 python 中,在 try 里面定義的變量,在 except 仍然可以訪問
try:
i = 1
# 模擬異常
j = 1 / 0
except:
print(i) # 打印結(jié)果為 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 中沒有明確定義常量的方式,也就是你認為是他就是,不過仍然推薦用大寫方式命名,當(dāng)然,這種定義方式仍然可以隨時修改‘常量’的值
RETRY_TIMES = 3.14
而 java 中使用 final 關(guān)鍵字修飾
final int RETRY_TIMES = 0
3. redis hash 數(shù)據(jù)類型無法給 field 設(shè)置過期時間
這個問題跟 python 沒有關(guān)系。
第一次使用 redis hash 數(shù)據(jù)結(jié)構(gòu)。
首先 redis hash 數(shù)據(jù)類型 是通過一下方式存儲數(shù)據(jù)的。
set key fieldname fieldvalue
并且無法通過給 fieldname 設(shè)置過期時間,只能給 key 設(shè)置過期時間。
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 庫設(shè)置超時時間
首先 requests 庫是通過如下方式設(shè)置超時時間
# 超時時間是通過元祖的方式傳入的
requests.post(url, data, timeout=(connect_timeout, read_timeout))
# 會自動轉(zhuǎn)為
如果傳入 timeout=1.0, 會自動轉(zhuǎn)為下面的形式
requests.post(url, data, timeout=(1.0, 1.0))
6. flask 項目局域網(wǎng)內(nèi)無法通過 ip 訪問
解決方式: 傳入?yún)?shù) 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 參數(shù)
app.run(host="0.0.0.0", port=5001, debug=True, use_reloader=False, threaded=True)
總結(jié)
以上就是對 python 開發(fā)過程遇到的問題,沒有難度,純粹是簡單記錄一下。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的python flask项目过程_Python 开发过程遇到的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离婚了怎么走出来(怎样做才能从离婚的痛苦
- 下一篇: python中将整数转化为八进制的函数,