美文网首页
公司项目总结(2019-1-26)

公司项目总结(2019-1-26)

作者: sunshaoping | 来源:发表于2019-01-23 19:33 被阅读0次

    近期在做项目的过程中,出现不少的问题,现在讲问题总结一下。
    一、有一组数据每0.5秒更新一次,按照之前的逻辑来说的话,就是前台实现轮询操作,每隔0.5秒请求一次数据,这样数据才能更新。但是觉得这样会比较消耗资源,如果发现可以使用Flask_socketio这个模块实现推送数据。

    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))
    注:在项目生成数据脚本需要隐藏这句代码,才能生成数据模型
    4.game_socket.py文件中导入该模块
    socketio=SocketIO()
    sock = Blueprint('sock', __name__)
    # 服务端接受客户端发送的通信请求
    @socketio.on('connect_event', namespace='/websocket/user_refresh')
    def connect_event():
        global thread
        with thread_lock:
            if thread is None:
                # 开启线程获取数据,并将数据推送到指定路由
                thread = socketio.start_background_task(background_thread1)
    

    总结:1.在使用此长链接推送时,前台会在进入APP后即建立链接,这样会比较消耗资源,而且在退出游戏界面的时候,长链接也没有断开,所以才此方法:在进入APP后开始建立长链接时就将长链接断开,进入游戏后再建立长链接,在退出A游戏后就将长链接直接断开
    2.我在项目中使用到flask_socketio模块,同时我同事也使用了websocket,在他的项目上线后,我的flask_socketio模块就没办法使用了,起初我也不知道是这个的原因,后面我在排查了大半天的错误,终于发现我的项目在隐藏flask_socketio模块之后,就可以正常的运行,因此我就认为是这个问题,后面只好新进一个虚拟环境进行部署项目,这样每个人的项目都不会受到影响。
    二、python虚拟环境的使用
    1.linux系统下虚拟环境的操作步骤

    # 1.新建目录
    mkdir 目录
    # 2.新建python虚拟环境
    python -m venv qkgd_venv (虚拟环境名称)
    # 3.进入虚拟环境,进入虚拟环境后命令前会出现虚拟环境的名称
    source qkgd_venv/bin/activate
    # 4.使用虚拟环境启动项目
    python manage.py runserver
    # 5.退出虚拟环境
    deactivate
    

    具体可参考文档:http://docs.jumpserver.org/zh/docs/step_by_step.html
    三、使用python 模块需求文件
    在服务器部署项目的过程可能会需要安装很多的依赖模块,可以将项目需要的模块生成一个需求文件,然后在服务器上直接安装这个需求文件即可

    1.生成需求文件命令,将项目需要的模块导向到txt文件
    pip freeze 项目名 > requirements.txt
    2.创建完虚拟环境后,下载需要的模块
    pip install -r requirements.txt
    3.同时需要注意安装的模块版本
    我在生成需求文件的时候,下载了redis3的版本,但是我应该需要使用redis2的版本,所以应该注意项目需要的模块版本。
    

    四、flask_sqlalchemy 多条件联合查询

    ks_time:开始时间戳
    js_time:结束时间戳
    # 查询指定用户的指定时间段的数据
    lottery_list = User_lottery.query.filter_by(user_id=i.id).filter(ks_time2 < User_lottery.date).filter(User_lottery.date < js_time2).all()
    

    相关文章

      网友评论

          本文标题:公司项目总结(2019-1-26)

          本文链接:https://www.haomeiwen.com/subject/cayndqtx.html