请求操作之前和之后的烧瓶不起作用/打印任何东西

如何解决请求操作之前和之后的烧瓶不起作用/打印任何东西

所以我有一个奇怪的错误,操作前后都不起作用。他们以前写入 requests.log 文件,但现在不起作用,并且控制台的常规打印语句不起作用,我不知道为什么:


# function to handle bson type returned by mongodb
# taken from https://stackoverflow.com/a/18405626
def parse_json(data):
    return json.loads(json_util.dumps(data))

app = flask.Flask(__name__)
api = Api(app)

#we will be logging the API end point that was accessed,the time it was accessed,and how long it took to address the request
#all logging will be to a local file,requests.log.
@app.before_request
def start_timer():
    g.start = time.time()

@app.after_request
def log_request(response):
    Now = time.time()
    duration = round(Now - g.start,2)
    print(response.get_data())  #not working
    f = open("requests.log","a+")
    f.write("testing") #also not working
    f.write("The following request took ({}) seconds".format(duration)) #not working
    f.write("\n")
    f.close()
    print("dhefei") #not working
    app.logger.info('Processing default request') #not working
    print(request.url,request.remote_addr,file=sys.stderr)
    return response

这些操作之外的任何打印语句都可以工作。

解决方法

我测试了你的代码,看起来不错!但更新很少。

from flask import g,request,Flask
import logging
import time
import sys


logging.basicConfig(
    format='%(asctime)-15s %(levelname)-8s %(name)-1s: %(message)s',level=logging.DEBUG)

logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)

# function to handle bson type returned by mongodb
# taken from https://stackoverflow.com/a/18405626
def parse_json(data):
    return json.loads(json_util.dumps(data))

app = Flask(__name__)

@app.route('/')
def hello_world():
    time.sleep(4)
    return 'Hello,World!'

@app.before_request
def start_timer():
    g.start = time.time()

@app.after_request
def log_request(response):
    now = time.time()
    duration = round(now - g.start,2)
    logging.info(response.get_data())  #not working
    logging.info("testing") #also not working
    logging.info("The following request took ({}) seconds".format(duration)) #not working
    logging.info("dhefei") #not working
    logging.info('Processing default request') #not working
    return response


if __name__ == '__main__':
    app.run(host='localhost',port=9999)

在控制台中:

python3 flaskapp.py
 * Serving Flask app "flaskapp" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
2021-03-15 11:13:13,723 INFO     werkzeug:  * Running on http://localhost:9999/ (Press CTRL+C to quit)
2021-03-15 11:13:19,982 INFO     root: b'Hello,World!'
2021-03-15 11:13:19,982 INFO     root: testing
2021-03-15 11:13:19,983 INFO     root: The following request took (4.0) seconds
2021-03-15 11:13:19,983 INFO     root: dhefei
2021-03-15 11:13:19,983 INFO     root: Processing default request
2021-03-15 11:13:19,985 INFO     werkzeug: 127.0.0.1 - - [15/Mar/2021 11:13:19] "GET / HTTP/1.1" 200 -

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?