首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的python应用程序中使用烧瓶启用cors时缺少“logger_name”

在我的python应用程序中使用烧瓶启用cors时缺少“logger_name”
EN

Stack Overflow用户
提问于 2021-12-18 16:45:17
回答 1查看 137关注 0票数 -1

我在试着让CORS工作。不过,解决办法并不适用于所有api,所以我希望有一种正常的工作方式。现在我已经被困在这里一段时间了。我尝试过像这样初始化CORS:

代码语言:javascript
复制
flask_app = Flask(__name__)
CORS(flask_app)

这给了我以下错误:

return logging.getLogger("%s.cors" % app.logger_name) AttributeError: 'Flask' object has no attribute 'logger_name'

完全错误是:

代码语言:javascript
复制
2021-12-18 16:30:57 default[20211218t172924]  Traceback (most recent call last):
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker      worker.init_process()    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process      self.load_wsgi()    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi      self.wsgi = self.app.wsgi()    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi      self.callable = self.load()    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load      return self.load_wsgiapp()    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp      return util.import_app(self.app_uri)    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/util.py", line 412, in import_app      app = app(*args, **kwargs)    
File "/workspace/app.py", line 38, in get_flask_app      CORS(flask_app)    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask_cors/extension.py", line 59, in __init__      self.init_app(app, **kwargs)    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask_cors/extension.py", line 81, in init_app      getLogger(app).info("Configuring CORS with resources: %s", resources_human)    
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask_cors/core.py", line 356, in getLogger      
return logging.getLogger("%s.cors" % app.logger_name)  AttributeError: 'Flask' object has no attribute 'logger_name'

当我移除CORS(flask_app)时,一切都很好。除了我想解决的CORS问题。

这是我完整的app.py:

代码语言:javascript
复制
# flask packages
from flask import Flask, request, app
from flask_cors import CORS
from flask_restful import Api
from flask_mongoengine import MongoEngine
from flask_jwt_extended import JWTManager
import logging


# local packages
from api.routes import create_routes

# external packages
import os

# default mongodb configuration
default_config = {'MONGODB_SETTINGS': {
                    'db': '(....)',
                    'host': '(....)',
                    'port': 27017,
                    'username': 'admin',
                    'password': 'password',
                    'authentication_source': 'admin'},
                    'JWT_SECRET_KEY': '(...)'}


def get_flask_app(config: dict = None) -> app.Flask:
    """
    Initializes Flask app with given configuration.
    Main entry point for wsgi (gunicorn) server.
    :param config: Configuration dictionary
    :return: app
    """
    # init flask
    logging.getLogger('flask_cors').level = logging.DEBUG

    flask_app = Flask(__name__)
    CORS(flask_app)

    # configure app
    config = default_config if config is None else config
    flask_app.config.update(config)

    # load config variables
    if 'MONGODB_URI' in os.environ:
        flask_app.config['MONGODB_SETTINGS'] = {'host': os.environ['MONGODB_URI'],
                                                'retryWrites': False}
    if 'JWT_SECRET_KEY' in os.environ:
        flask_app.config['JWT_SECRET_KEY'] = os.environ['JWT_SECRET_KEY']

    # init api and routes
    api = Api(app=flask_app)
    create_routes(api=api)

    # init mongoengine
    db = MongoEngine(app=flask_app)

    # init jwt manager
    jwt = JWTManager(app=flask_app)

    return flask_app





if __name__ == '__main__':
    # Main entry point when run in stand-alone mode.
    app = get_flask_app()
    app.run(host='0.0.0.0', port=8080)

使用Google平台。这会是我问题的关键吗?我的app.yaml是:

代码语言:javascript
复制
runtime: python38
entrypoint: gunicorn -b :$PORT 'app:get_flask_app()'

我会试着看看在本地会发生什么,也许在这里更容易解决。考虑一下什么时候重新输入这个问题。

已经更新了我的酒瓶(烧瓶)。尝试了很多事情,什么也没成功,所以这个问题。

帮助是非常感谢的/谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-25 15:51:10

增加本部分:

代码语言:javascript
复制
Flask.logger_name = "listlogger"

最终帮我解决了。现在它找到了logger_name。那个记录器只是一个随机的名字。

在打开app +CORS(App)之前,我添加了它:

代码语言:javascript
复制
    Flask.logger_name = "listlogger"
    flask_app = Flask(__name__)
    CORS(flask_app)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70405254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档