崩溃后在服务器上重新启动python脚本



我目前正在尝试设置一个服务器来运行tensorflow应用程序。它工作正常,但如果请求太多,服务器会终止烧瓶应用程序,该应用程序正在请求我的tensorflow模型的答案。这意味着,只要我不在服务器终端中使用python3 flaskApp.py手动重新启动烧瓶应用程序,服务器就没有用。

有没有一种方法可以在Python脚本失败后自动重新启动它<==!!主要问题!!

当我偶尔得不到返回值,但我不想每天手动重新启动flaskApp一次时,这并不困扰我。

这是我的flask应用程序的代码,方法"handler"从后台运行的tensorflow模型中返回一个概率。

from flask import Flask, redirect, request, jsonify
from modelv4 import *
from waitress import serve
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route('/', methods=['POST'])
def processjson():
data = request.get_json()
satz = data['text']
print(satz)
ruckgabe = handler(satz)
ruckgabe = round(ruckgabe*10000)
ruckgabe = ruckgabe / 100
ruckgabe = str(ruckgabe)
ruckgabe = jsonify({"ruckgabe": ruckgabe})
#ruckgabe.headers.add('Access-Control-Allow-Origin', '*')
return ruckgabe
if __name__=='__main__':
serve(app, host="0.0.0.0", port=8080)

服务器作为Ubuntu实例在aws EC2上运行,因此您可以获得一个基本的linux终端。如果你需要更多的信息来回答我的问题,请告诉我。

由于应用程序运行在ubuntu服务器上,我建议使用systemd。你可以让systemd自动重新启动它,以防它失败或意外死亡。

为此,您可以将重新启动选项添加到专门为应用程序创建的.service文件中。

如何使用systemd将烧瓶应用程序作为服务运行?

.service文件的可能配置如下:

[Unit]
Description=My flask app
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
Restart=on-failure
RestartSec=5s
ExecStart= <script to start your application>
[Install]
WantedBy=multi-user.target

最新更新