日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2023/12/3 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 中沒有明確定義常量的方式,也就是你認為是他就是,不過仍然推薦用大寫方式命名,當(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)容,希望文章能夠幫你解決所遇到的問題。

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