Flask中如何返回Retry-After响应头?
在Flask中返回503错误时添加Retry-After响应头
你可以通过两种方式实现需求:
方法一:直接返回响应头字典
这是最简洁的实现方式,直接在返回元组中加入Retry-After头的键值对:
from flask import Flask, send_from_directory, Response import datetime @app.route('/x/<string:file_name>') def make_file(file_name): if creation_of_file(file_name) == 'success': return send_from_directory('files', file_name) else: # 直接指定Retry-After为300秒 return 'File not ready. Try again later', 503, {'Retry-After': '300'}
方法二:使用Response实例的retry_after方法
你之前的代码错误在于直接调用Response.retry_after类方法,实际上它是实例方法,需要先创建Response对象,再调用该方法设置响应头:
from flask import Flask, send_from_directory, Response import datetime @app.route('/x/<string:file_name>') def make_file(file_name): if creation_of_file(file_name) == 'success': return send_from_directory('files', file_name) else: resp = Response('File not ready. Try again later', status=503) # 使用timedelta指定重试间隔 resp.retry_after(datetime.timedelta(seconds=300)) return resp
retry_after方法支持两种参数类型:
datetime.timedelta:设置从当前时间开始的等待秒数datetime.datetime:设置具体的重试时间点(会自动格式化为HTTP标准日期格式)
内容的提问来源于stack exchange,提问作者Nanno
相关产品推荐
相关产品推荐

