Python - как отключить кэш во Flask?Ошибка 500 сервера во время второго запроса POST, отправленного на сервер, в то время как первый запрос был 200 OK - PullRequest
0 голосов
/ 21 ноября 2018

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

Ниже приведен мой код:

@app.route('/ws_part' , methods=['POST'])
def ws_part():
    request_data = request.get_json()

    #placeholder for workstation number and part number 
    received_data ={'ws_no':request_data['workstation'],
                'part_no':request_data['part']}

    #Checking if workstation number is already available
    global updated
    updated = 'no'
    for i in repository:
        if i['ws'] == received_data['ws']:
            i['part'] = received_data['part']
            updated = 'yes'

    if(updated!='yes'):
        new_input = received_data
        repository.append(new_input)

    return jsonify({'repository': repository})

Проблема, с которой я столкнулся: 1. Самый первый запрос успешно проходит и дает200 OK, ответ и номер рабочей станции, а также часть, поставляемая с запросом, сохраняются в заполнителе хранилища.2.Но уже следующий запрос выдает 500 ошибка сервера

Ошибка: файл "API_ws_par.py", строка 23, в ws_part, если я ['ws'] == полученный_данные ['ws']: KeyError: 'ws '

3. Забавная вещь: если в этот момент я перезапускаю свой веб-сервис и снова запускаю запрос POST, данные, поступающие с этим новым запросом, перезаписываются, и я теряю ранее сохраненные данные.4. Кроме того, последующий второй запрос POST выдает ту же ошибку 500 сервера

Пожалуйста, сообщите, если это как-то связано с кешем?Если да, то, пожалуйста, дайте мне знать, как это сделать?

Заранее спасибо.

1 Ответ

0 голосов
/ 21 ноября 2018

это не проблема кеширования, это проблема в логике функции, при первом вызове вы, вероятно, не попадаете в строку кода, генерирующую исключение, проблема во втором вызове, ключеимя не 'ws', это 'ws_no', если вы измените эти строки:

  for i in repository:
    if i['ws'] == received_data['ws_no']:
        i['part'] = received_data['part_no']
        updated = 'yes'

, чтобы использовать 'ws_no', и 'part_no', у вас не будет ошибки ключа.

...