我正在尝试使用Nginx和flask制作REST-API。 问题是我不确定如何正确执行操作。我没有找到任何合适的指南。 我现在所拥有的: /etc/nginx/conf.d/myservice.conf:
upstream myapp1 {
least_conn;
server 127.0.0.1:4100;
server 127.0.0.1:4101;
server 127.0.0.1:4102;
}
server {
listen 1335;
location / {
proxy_pass http://myapp1;
}
}
如果我正确理解它,它将捕获来自1335的请求并将其重新寻址到4101-4102。 minimum_conn应该使它的工作效率更高,对吗?我的主要要求是:如果所有服务器都在忙,Nginx应该稍等一下再试一次。如果这太复杂了,并且需要像Celery这样的东西,我可以使用:例如,用户应该获得418错误代码。
我的主要问题与flask应用有关。 我的代码api.py: 注意“状态”。我希望在应用程序运行中仅加载一次,而不是每次请求都加载一次。如果我在RAM中以3 * 6 = 18GB数据启动3个线程-对我来说没关系。
import everything_i_need
some_other_commands
app = flask(__name__)
app.url_map.strict_slashes = False
state = *some_code_here* #6GB of data. Model for a neural network.
@app.route('/api/v1/something/',methods=['POST'])
def do_it:
request_str = request.get_data().decode('utf-8').strip()
response = some_program.some_method(state,request_str)
return response,200
if __name__ == '__main__':
app.run(host='0.0.0.0',port=4100,threaded=True)
app.run(host='0.0.0.0',port=4101,port=4102,threaded=True)
我很确定自己做的事情完全错了。有没有正确的方法来创建N个“状态”实例和N个端口?
我将api.py称为服务(为此我有一个systemd配置)。