微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在本地机器上带有烧瓶的 Python 网络应用程序

如何解决在本地机器上带有烧瓶的 Python 网络应用程序

我是 python 和 Flask 的新手,我有一个来自生产环境的项目,我试图在我的本地运行。 我能够安装所有软件包并在 http://127.0.0.1:5000 上启动它们,但问题是这是唯一在我的本地实际工作的页面。当我尝试进行授权或什至简单的发布时,它在我的本地没有做任何事情(我在其他文件上放了一些打印,但没有一个被触发)所以我认为它们会继续投入生产,因为它确实有一些 API以及。 这是在我的本地工作的主页 (application.py)。

import os
import jwt
import logging
from datetime import datetime,timedelta

from http import HTTPStatus
from pydantic import BaseModel
from passlib.context import CryptContext
from flask import Flask,request,jsonify
from flask_restplus import Api,Resource,fields
from werkzeug.middleware.proxy_fix import ProxyFix
from applicationinsights.flask.ext import AppInsights

app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app,x_proto=1,x_host=1)
api = Api(app,doc='/')
ns = api.namespace(name='Room Parsing',path='/')
swaggerTokenParser = api.parser()
swaggerTokenParser.add_argument('username',location='form')
swaggerTokenParser.add_argument('password',location='form')

pwd_context = CryptContext(schemes=["bcrypt"],deprecated="auto")
rtp = RoomTitleParser(room_prototype_XX_path)

ALGORITHM = "HS256"


app.config["SECRET_KEY"] = os.getenv('SECRET_KEY')
app.config["APPINSIGHTS_INSTRUMENTATIONKEY"] = os.getenv('APPINSIGHTS_INSTRUMENTATIONKEY')

appinsights = AppInsights(app)
app.logger.setLevel(level=logging.INFO)
logger = app.logger



@ns.route("/api/room/parser")
class RoomParser(Resource):
    
    @api.expect(swaggerRoom)
    @api.doc(description='Process a JSON object with a room description and a unique identifier in order to run it through the parser. This will result in a list of keywords which will be extracted from the description. The result will be returned in a JSON format')
    def post(self):
        try:
            
            room_desc = "deluxe suite queen ocean view"
            room_id = "ID123"

                    
            print('11111111111')
    
                    

            if not room_desc or not room_id:
                    return make_json_error_message("Please send a a room with description and id",HTTPStatus.BAD_REQUEST)
    
                room_dict = dict(Room(description=room_desc,id=room_id))

                print(parsed)

                parsed = rtp.parse_title(room_dict)

                print(parsed)

                return jsonify(parsed['room'])
            except Exception as e:
                logger.error("Error parsing a room: " + repr(e))
                return make_json_error_message("We have encountered an error. Please try again later",HTTPStatus.BAD_REQUEST)

if __name__ == "__main__":
    app.run(host="0.0.0.0",port=5000)

如您所见,我有一些打印语句,所有这些语句都在我的本地控制台上运行。但是当我追踪此行示例的代码时,

parsed = rtp.parse_title(room_dict)

并在位于另一个文件中的 parse_title() 函数中放置一些打印命令,我在控制台和网页中都看不到任何输出

为什么?我不知道!!!哈哈这就是我来这里的原因

我认为这可能与我在课堂上的 @ns.route("/api/room/parser") 有关,但不确定。

你们能不能在这里留下一些知识,这样我就可以学习并让这段代码完全在我的本地工作?

感谢您的帮助!

解决方法

根据您提供的内容,似乎没有提及生产环境。

唯一让我印象深刻的是

app.wsgi_app = ProxyFix(app.wsgi_app,x_proto=1,x_host=1)

Werkzeug Documentation 声明该中间件可以从 X-Forwarded 标头设置 REMOTE_ADDR、HTTP_HOST。您可以尝试将其删除一段时间,看看是否有帮助。该代理中可能有一些对生产的引用。不过,我对该中间件的了解还不够,无法确定。

了解您设置的任何其他配置信息或环境可能会有所帮助。

,

它与我的 conda 环境有关, 所以我卸载了 Anaconda,然后安装了普通的 python 并安装了 pyCharm,并在 pycharm 中设置了一个新的 env。然后它就像一个魅力! 谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?