代码之家  ›  专栏  ›  技术社区  ›  asdoylejr

使用Flask+Ngnix+uWSGI记录时出现名称错误

  •  1
  • asdoylejr  · 技术社区  · 7 年前

    我已经在ngnix/uwsgi后面部署了一个Flask应用程序,我收到了一个名称错误,我不确定如何解决。

    import logging
    from logging.handlers import RotatingFileHandler
    import json
    from time import gmtime, strftime
    from flask import Flask, request
    from jester import jester
    
    app = Flask(__name__)
    
    # initialize the log handler
    logHandler = RotatingFileHandler('/var/log/jester.log', maxBytes=1000, backupCount=1)
    # set the log handler level
    logHandler.setLevel(logging.ERROR)
    # set the app logger level
    app.logger.setLevel(logging.ERROR)
    app.logger.addHandler(logHandler)
    
    def render_response(response_data, status_code):
        return app.response_class(
                response=json.dumps(response_data),
                status=status_code,
                mimetype='application/json'
            )
    
    # Health check
    @app.route('/health-check')
    def health_check():
        return render_response("Healthy", 200)
    
    # Main ingestion endpoint
    @app.route('/ingest', methods=['POST'])
    def ingest():
        # Gather data from the request
        data = request.get_json()
    
        app.logger.info("Running with data: %s" % str(data))
    
        #other code...
    
    if __name__ == "__main__":
        app.run(
            host = "0.0.0.0",
            port = int("9999")
        )
    

    我收到的错误如下:

    [2017-08-30 18:16:26,681] ERROR in app: Exception on /ingest [POST]
    Traceback (most recent call last):
      File "/var/www/jester/venv/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
        response = self.full_dispatch_request()
      File "/var/www/jester/venv/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "/var/www/jester/venv/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
        reraise(exc_type, exc_value, tb)
      File "/var/www/jester/venv/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
        rv = self.dispatch_request()
      File "/var/www/jester/venv/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
        return self.view_functions[rule.endpoint](**req.view_args)
      File "/var/www/jester/server.py", line 28, in ingest
        return render_response("Healthy", 200)
    NameError: global name 'logger' is not defined
    

    我的uwsgi。ini文件:

    [uwsgi]
    #application's base folder
    base = /var/www/jester
    
    #python module to import
    app = server
    module = %(app)
    
    home = %(base)/venv
    pythonpath = %(base)
    
    #socket file's location
    socket = /var/www/jester/%n.sock
    
    #permissions for the socket file
    chmod-socket = 666
    
    #the variable that holds a flask application inside the module imported at line #6
    callable = app
    
    #location of log files
    logto = /var/log/uwsgi/%n.log
    

    1 回复  |  直到 7 年前
        1
  •  0
  •   senaps    7 年前

    logger 变量作为日志类的对象,然后添加 handler

    logger = logging.getLoger()
    

    logHandler = RotatingFileHandler 你应该没事的。

    this simple tutorial 记录时。