Тайм-аут соединения клиент-сервер Flask по истечении заданного времени - PullRequest
0 голосов
/ 12 марта 2019

У меня есть приложение для колб.Я хочу, чтобы соединение клиент-сервер прервалось, если сервер не отвечает в течение установленного времени (скажем, 20 секунд).Я прочитал здесь , что session.permanent = True можно установить.Мне немного непонятно, где это происходит в коде серверной части (если вообще так происходит?).

Для простоты я включаю минимальный код серверной части, который у меня есть.На самом деле сервер выполняет операцию чтения / записи файла и возвращает результат клиенту.

from flask import Flask, session, app
from flask_restful import Api, Resource
from datetime import timedelta

app = Flask(__name__)
api = Api(app)

class GetParams(Resource):
    def get(self):
        print ("Hello.")
        return 'OK'

api.add_resource(GetParams, '/data') 
if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5002) 

Может кто-нибудь сказать мне, что я должен делать здесь, чтобы соединение между моим клиентом и сервером было разорвано, еслисервер не отвечает, т.е. отправляет данные обратно клиенту в течение 20 секунд?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Долгосрочные задачи должны решаться в другом дизайне, потому что, если вы разрешите своему серверу поддерживать запрос в течение 50 минут, вы не сможете заставить пользовательский браузер делать это.

Я бы порекомендовал реализовать долгосрочное задание в виде потока, который уведомит пользователя, как только это будет сделано.

Подробнее о постановке проблемы и предлагаемых решениях:

  1. проблема тайм-аута с хромом и колбой
  2. длинные шаблоны времени запроса
0 голосов
/ 12 марта 2019

Я считаю, что единственное, что вам нужно, - это поместить оператор связи в блок try/except. Так что вы сможете обрабатывать любые ошибки подключения.


Кроме того, время ожидания сеанса и сбой подключения / недоступность сервера - разные вещи. Тайм-аут сеанса отключает пользователя от сервера, который находится здесь слишком долго (обычно используется, чтобы пользователь не забыл открыть сеанс). Принимая во внимание, что когда сервер недоступен, пользователь не подключен, поэтому время ожидания сеанса отсутствует.


from flask import Flask, session, app
from flask_restful import Api, Resource
from datetime import timedelta

app = Flask(__name__)
api = Api(app)

class GetParams(Resource):
    def get(self):
        print ("Hello.")
        return 'OK'

api.add_resource(GetParams, '/data') 
if __name__ == '__main__':
      try:
         app.run(host='130.0.1.1', port=5002)
      except:
         print("unexcepted error")

вы можете квалифицировать полученное исключение, но вам придется прочитать немного документа http://flask.pocoo.org/docs/1.0/quickstart/#what-to-do-if-the-server-does-not-start

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...