日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python flask项目过程_Python 开发过程遇到的问题

發(fā)布時間:2023/12/3 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python flask项目过程_Python 开发过程遇到的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

另一方面,也是因為時間原因,沒有事先系統(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 中沒有明確定義常量的方式,也就是你認為是他就是,不過仍然推薦用大寫方式命名,當然,這種定義方式仍然可以隨時修改‘常量’的值

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。