我正在使用flask_restful
编写一个后端烧瓶应用程序。
我有1个端点,它将读取一些文件并作出响应。
首先,我启动开发服务器,然后使用gevent
from gevent.pywsgi import WSGIServer
# app.run(port=9788, threaded=True, debug=True)
http_server = WSGIServer(('', 9788), app)
http_server.serve_forever()
然后,我编写了另一个python脚本,该脚本发出100个随机请求,并将它们放在Pool()
中。没有502
。
到目前为止,太好了。
我添加了另一个端点,该端点用于查询数据,并将结果作为csv
写入磁盘上的文件。
我再次运行了脚本,并向第二个端点运行了1个请求。
第二个请求正在写入磁盘上的文件时,所有请求都将挂起。一旦完成,他们将重新开始。
这是我的代码段。
if __name__ == '__main__':
app = Flask(__name__)
api = Api(app)
api.add_resource(DownloadCSVQuery, '/query_to_csv') # Route_3
class DownloadCSVQuery(Resource):
def post(self):
msg, is_succeed = self.begin_download(request.json)
return msg, 200 if is_succeed else 500
def begin_download(self, input_query):
# some code to query the data
# open a new file with 'w' option
# use csv.writer to start writing
我不应该写磁盘吗?那甚至是一个原因吗?如果是这样,有什么解决方法?
例如,我可以通过直接写到S3
来解决此问题,但是我将拥有第三个端点,在上传到S3之前需要将其写入本地二进制文件。