公司項目總結(jié)(2019-1-26)

近期在做項目的過程中,出現(xiàn)不少的問題,現(xiàn)在講問題總結(jié)一下。
一、有一組數(shù)據(jù)每0.5秒更新一次,按照之前的邏輯來說的話,就是前臺實現(xiàn)輪詢操作,每隔0.5秒請求一次數(shù)據(jù),這樣數(shù)據(jù)才能更新。但是覺得這樣會比較消耗資源,如果發(fā)現(xiàn)可以使用Flask_socketio這個模塊實現(xiàn)推送數(shù)據(jù)。

1.下載該模塊
pip install flask_socketio
2.將該模塊注冊給app
app 下的__init__文件
# sock路由
app.register_blueprint(sock, url_prefix='/sock')
# 注冊socketio
socketio.init_app(app=app, async_mode=async_mode)
3.manage.py文件
# 綁定socketio
manager.add_command('run', socketio.run(app=app, host='0.0.0.0', port=8081))
注:在項目生成數(shù)據(jù)腳本需要隱藏這句代碼,才能生成數(shù)據(jù)模型
4.game_socket.py文件中導(dǎo)入該模塊
socketio=SocketIO()
sock = Blueprint('sock', __name__)
# 服務(wù)端接受客戶端發(fā)送的通信請求
@socketio.on('connect_event', namespace='/websocket/user_refresh')
def connect_event():
    global thread
    with thread_lock:
        if thread is None:
            # 開啟線程獲取數(shù)據(jù),并將數(shù)據(jù)推送到指定路由
            thread = socketio.start_background_task(background_thread1)

總結(jié):1.在使用此長鏈接推送時,前臺會在進(jìn)入APP后即建立鏈接,這樣會比較消耗資源,而且在退出游戲界面的時候,長鏈接也沒有斷開,所以才此方法:在進(jìn)入APP后開始建立長鏈接時就將長鏈接斷開,進(jìn)入游戲后再建立長鏈接,在退出A游戲后就將長鏈接直接斷開
2.我在項目中使用到flask_socketio模塊,同時我同事也使用了websocket,在他的項目上線后,我的flask_socketio模塊就沒辦法使用了,起初我也不知道是這個的原因,后面我在排查了大半天的錯誤,終于發(fā)現(xiàn)我的項目在隱藏flask_socketio模塊之后,就可以正常的運行,因此我就認(rèn)為是這個問題,后面只好新進(jìn)一個虛擬環(huán)境進(jìn)行部署項目,這樣每個人的項目都不會受到影響。
二、python虛擬環(huán)境的使用
1.linux系統(tǒng)下虛擬環(huán)境的操作步驟

# 1.新建目錄
mkdir 目錄
# 2.新建python虛擬環(huán)境
python -m venv qkgd_venv (虛擬環(huán)境名稱)
# 3.進(jìn)入虛擬環(huán)境,進(jìn)入虛擬環(huán)境后命令前會出現(xiàn)虛擬環(huán)境的名稱
source qkgd_venv/bin/activate
# 4.使用虛擬環(huán)境啟動項目
python manage.py runserver
# 5.退出虛擬環(huán)境
deactivate

具體可參考文檔:http://docs.jumpserver.org/zh/docs/step_by_step.html
三、使用python 模塊需求文件
在服務(wù)器部署項目的過程可能會需要安裝很多的依賴模塊,可以將項目需要的模塊生成一個需求文件,然后在服務(wù)器上直接安裝這個需求文件即可

1.生成需求文件命令,將項目需要的模塊導(dǎo)向到txt文件
pip freeze 項目名 > requirements.txt
2.創(chuàng)建完虛擬環(huán)境后,下載需要的模塊
pip install -r requirements.txt
3.同時需要注意安裝的模塊版本
我在生成需求文件的時候,下載了redis3的版本,但是我應(yīng)該需要使用redis2的版本,所以應(yīng)該注意項目需要的模塊版本。

四、flask_sqlalchemy 多條件聯(lián)合查詢

ks_time:開始時間戳
js_time:結(jié)束時間戳
# 查詢指定用戶的指定時間段的數(shù)據(jù)
lottery_list = User_lottery.query.filter_by(user_id=i.id).filter(ks_time2 < User_lottery.date).filter(User_lottery.date < js_time2).all()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容