iT邦幫忙

0

ajax後端重啟server進度條功能

前端的部分想按下按鈕跑出系統重啟的loading的圖
以下呼叫後端api

$('#change').on('click', function () {
    var urlAPI = setting.urlsetting
    $.ajax({
        url: urlAPI + "/v1/changeDevice",
        type: "post",
        dataType: "json",
        contentType: "application/json;charset=utf-8",

        success: function (returnData) {
            console.log(returnData);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            console.log(xhr.status);
            console.log(thrownError);
        }
    })
});

後端api會執行server的重啟

@apiApp.route('/changeDevice', methods=['GET', 'POST'])
def changeDevice():
    if request.method == 'POST':
        def restart_program():
            python = sys.executable
            os.execl(python, python, * sys.argv)
            if __name__ == "__main__":
                print ('start...')
                print ('3秒後,程式將結束...')
            time.sleep(3)
        result = {
             'msg':'i am python'
        }
        service.doClose()
        time.sleep(3)
        os.system('./callimportconfig.sh')
        return jsonify(result)
    else:
        return 'no found server'

前端log
https://ithelp.ithome.com.tw/upload/images/20210527/20129366XTE1pPpK5g.png
因為server重開的時候斷開所以收不到return jsonify(result)的東西就無法判斷是否重啟成功

想請教身經百戰的大大 前端部分需要做甚麼可以達成我想要的功能
感謝!!

froce iT邦大師 1 級 ‧ 2021-05-28 10:17:26 檢舉
重啟成功喔...
預估個應該會正常重啟的時間,然後弄一條測試用route,時間到就打這條route,回傳有就重啟成功。
感謝大大的想法,會照著這想法實作感謝!!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
黃彥儒
iT邦高手 1 級 ‧ 2021-05-27 21:05:14
最佳解答

通常這沒在真的通訊的啦……都馬是前端自己倒數
安撫使用者用的

了解 感謝!!

打雜工 iT邦研究生 1 級 ‧ 2021-05-29 11:27:01 檢舉

+1

0

一般這只能做到假倒數而已啦,除非你有類似KVM的機器。
或是VM相關的東西。才有機會拿到開啟進度。

感謝回答!!

我要發表回答

立即登入回答