FAQ Python + NLTK 搭建-动态部署(三)

背景

前面的研发+测试步骤完成后,需要将Python部署到生产环境

  • 使用Python3 创建基础镜像
  • 设置工作目录
  • 安装镜像依赖
  • 启动Flask应用

当上面步骤执行完成后,你会发现产品、运营、客服会不断的完善修改faq的内容,如果每次修改都要发一次python后台,那开发+测试+运维部署都是一个连环动作。

所以需要一个无需运维发布,产品运营只需提供md文件即可直接更新线上的脚本

脚本

设计更新线上时要注意几点,防止被恶意篡改、非法来源:

  • 需要域名、IP白名单
  • 增加动态秘钥
  • 增加签名
  • 请求头

IP限制

 secret_pro_key = kami_ntlk.get_update_faq_sql_secret()
    # Handle IPv4-mapped IPv6 addresses
    remote_addr = request.remote_addr

    # Check if the request is from a local network
    if not ('192.168.xxx' in remote_addr or 
            '10.xxx.xxx' in remote_addr or 
            '172.xxx.xx.xx' in remote_addr):
        return jsonify({'code': -10003, 'data': 'Access denied', 'addr': remote_addr}), 403

动态秘钥检查

    # Check for secret key
    secret_key = request.headers.get('X-Secret-Key')
    if secret_key != secret_pro_key:
        return jsonify({'code': -10003, 'data': 'Invalid secret key'}), 403

参数签名

每个公司的签名不同,使用自己公司的统一签名方式

将传入的json data执行sql,update sql后就实时生效了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容