Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
0 / 0 / 1
Регистрация: 17.02.2016
Сообщений: 47

Requests ошибка 500 в post запросе

01.04.2018, 20:41. Показов 9160. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо отправить словарь в пост запросе на страницу сайта.
Открываю http://localhost:5000/post - выдает ошибку post 500
Не могу понять почему? Он же должен просто открыть страницу node? или я должен передать в node эти две перменные? Сорри, я нуб

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@app.route('/post', methods=['GET', 'POST'])
def post_to_node():
    base_url = "http://localhost:5000/node"
    payload = {'key1': 'value1', 'key2': 'value2'}
    response = requests.post(base_url, data=payload, timeout=0.001)   
    return print(response.text)  # TEXT/HTML   
 
@app.route('/node', methods=['GET', 'POST'])
def node():
    response = {
            'send adress': request.form['key1'],
            'send atom': request.form['key2'],
        }
    return jsonify(response), 200
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2018, 20:41
Ответы с готовыми решениями:

Постоянная ошибка 415 при попытке сделать post запрос через библиотеку requests
Пытаюсь сделать post запрос с помощью модуля requests на данную страницу https://fg.resh.edu.ru/functionalliteracy/login, и каждый раз...

Ошибка 500 при пост запросе
При отправке формы возникает ошибка(на изображении) и она видна только в консоли, POST парметры передаются нормально, вот php код(весь файл...

Ошибка 500 при запросе к WebAPI
Привет. Помогите пожалуйста разобраться. Есть action на API контроллере controller public async...

12
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
02.04.2018, 05:00
Вместо return print(response.text) # TEXT/HTML :

Python
1
return jsonify(response.json()), 200
Добавлено через 44 секунды
Может быть таймаут слишком маленький, что в логах?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
02.04.2018, 15:25
Цитата Сообщение от lapitsky Посмотреть сообщение
return print(response.text)
Рыжий Лис, Пальцем в небо, но всё же, Flask позволяет возвращать None?

Добавлено через 2 минуты
https://stackoverflow.com/ques... le_rich_qa всё таки нельзя
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
02.04.2018, 16:48
Слона-то (функцию print()) я и не заметил. В любом случае надо смотреть логи.
0
0 / 0 / 1
Регистрация: 17.02.2016
Сообщений: 47
02.04.2018, 21:04  [ТС]
1. None поправил
2. timeout=0.001 - без этого параметра ошибка такая же

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@app.route('/node', methods=['GET', 'POST'])
def node():
    response = {
            'send adress': request.form['key1'],
            'send atom': request.form['key2'],
        }
    return jsonify(response), 200
 
 
@app.route('/post', methods=['GET', 'POST'])
def post_to_node():
    base_url = "http://localhost:5000/node"
    payload = {'key1': 'value1', 'key2': 'value2'}
    response = requests.post(base_url, data=payload, timeout=0.001)
    #response = requests.get(base_url, data=payload, timeout=0.001)
    res = response.text
    if print(response.text) is not None:
        res = response.text
    else:
        res = 'none'
    return  print(res)# TEXT/HTML
Добавлено через 3 минуты
Лог ошибки:

Кликните здесь для просмотра всего текста
C:\Users\230\AppData\Local\Programs\Pyth on\Python36-32\python.exe C:/Work/phyton/main.py
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
[2018-04-02 21:02:32,454] ERROR in app: Exception on /post [GET]
Traceback (most recent call last):
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 383, in _make_request
httplib_response = conn.getresponse()
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\http\client.py", line 1331, in getresponse
response.begin()
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\http\client.py", line 297, in begin
version, status, reason = self._read_status()
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\http\client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\socket.py", line 586, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\requests\adapters.py", line 440, in send
timeout=timeout
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 639, in urlopen
_stacktrace=sys.exc_info()[2])
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\urllib3\util\retry.py", line 357, in increment
raise six.reraise(type(error), error, _stacktrace)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\urllib3\packages\six.py", line 686, in reraise
raise value
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 601, in urlopen
chunked=chunked)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 389, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 309, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=5000): Read timed out. (read timeout=1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:/Work/phyton/main.py", line 148, in post_to_node
response = requests.post(base_url, data=payload, timeout=1)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\requests\api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\requests\api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\requests\sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\requests\sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "C:\Users\230\AppData\Local\Programs\Pyt hon\Python36-32\lib\site-packages\requests\adapters.py", line 521, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=5000): Read timed out. (read timeout=1)
127.0.0.1 - - [02/Apr/2018 21:02:32] "GET /post HTTP/1.1" 500 -
127.0.0.1 - - [02/Apr/2018 21:02:32] "POST /node HTTP/1.1" 200 -


Добавлено через 2 минуты
если таймаут убрать, страница бесконечно пытается грузится с пустым экраном
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
03.04.2018, 01:25
Цитата Сообщение от lapitsky Посмотреть сообщение
если таймаут убрать, страница бесконечно пытается грузится с пустым экраном
Кстати, так и должно быть. Дебаговый сервер Flask - однопоточный и ваша вьюха тупо вешает весь основный поток (блокируясь на ожидании ответа requests.post), в том случае, если вы запустили сервер без параметра threaded=True.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
03.04.2018, 04:43
Цитата Сообщение от lapitsky Посмотреть сообщение
1. None поправил
А вот и нет.

Garry Galler правильно подсказал. Запусти два приложения. Одно http://localhost:5001/node, второе: http://localhost:5000/post
0
0 / 0 / 1
Регистрация: 17.02.2016
Сообщений: 47
03.04.2018, 17:14  [ТС]
Спасибо! Действительно, надо создать отдельный сервер!
Итоговый вариант:

localhost:5000/pos

Python
1
2
3
4
5
6
@app.route('/post', methods=['GET', 'POST'])
def post_to_node():
    base_url = 'http://localhost:5001/node'
    payload = {'key1': 'value1', 'key2': 'value2'}
    response = requests.post(base_url, data=payload, timeout=1)
    return render_template('/post.html', response=response.text)
localhost:5001/node

Python
1
2
3
4
5
@app.route('/node', methods=['GET', 'POST'])
def node():
    print(request.form)
    response = 'Analizing' + request.form['key1'] + ' and ' + request.form['key2']
    return jsonify(response), 200
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
03.04.2018, 18:18
Цитата Сообщение от Garry Galler Посмотреть сообщение
Кстати, так и должно быть. Дебаговый сервер Flask - однопоточный и ваша вьюха тупо вешает весь основный поток (блокируясь на ожидании ответа requests.post), в том случае, если вы запустили сервер без параметра threaded=True.
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Запусти два приложения. Одно http://localhost:5001/node, второе: http://localhost:5000/post
Цитата Сообщение от lapitsky Посмотреть сообщение
Действительно, надо создать отдельный сервер!
Вы сговорились все? Перевызвать view-ху напрямую без использования сетевого стека нельзя что-ли? Зачем городить огород с requests если можно просто глобальный request сохранить и подменить для вызова другой view-хи? На создание соединения, даже через loopback уйдет на порядки раз больше времени чем вызов функции, чем являтся, view-ха. Тем более что у вас нету никаких CSRF и прочих приблуд, которые требуют написать немного больше кода.

Добавлено через 8 минут
Пошуршал немного google, в большенстве люди используют http://werkzeug.pocoo.org/docs... esting-api Но я на flask не пишу, поэтому не знаю хорошее ли это решение.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
03.04.2018, 20:25
outoftime,
Я также предполагал, что можно воспользоваться внутренним конструктором Request или чем-то еще встроенным во Flask. Однако, цели ТС мне не слишком понятны - не стал углубляться.
-----------------------------------------------------------
Кстати, запрос через внешний интерфейс (requests.post) работает и без двух серверов - просто:
Python
1
 app.run(debug=True,threaded=True)
Добавлено через 1 час 26 минут
-------------------------------------
Вместо requests.post можно использовать встроенный во Flask тестовый клиент.
Пример кода:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@app.route('/post', methods=['GET'])
def post():
    
    payload = {"key1": "value1", "key2": "value2"}
    try:
        client = app.test_client() # тестовый клиент
        response = client.post(
            url_for('json'), # путь до вьюхи отдающей запрошенные данные 
            #base_url='http://localhost:5001',
            #path='/json', # путь до вьюхи отдающей запрошенные данные 
            data=payload,
            content_type='multipart/form-data' 
            #data=flask.json.dumps(payload),
            #content_type='application/json'
            ) 
        
        answer = response.data
       
    except Exception as err:
        print(err)
        answer = [str(err)]
    
    return jsonify(answer)
1
0 / 0 / 1
Регистрация: 17.02.2016
Сообщений: 47
03.04.2018, 23:18  [ТС]
Цель простая, есть страница, которая получает через форму данные, дальше эти данные отправляются на сторонний сайт (нода или сервер), там эти данные обрабатываются и отправляется обратно ответ о том, что обработано ок.

1) То есть задача реализовать передачу данных максимально быстро и возврат данных о их удачном приеме и обработке
2) маломальский стек на сервере (странице), если ломится сразу много народу

Добавлено через 1 минуту
по поводу requests, везде в примерах указывают его и пишут, что он предпочтительнее, нежели чем urllib и встроенные методы flask. Так что не знаю, доверился советам.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
03.04.2018, 23:46
Цитата Сообщение от lapitsky Посмотреть сообщение
встроенные методы flask
Тестовый клиент на то тестовый - как я понял, он только для отладки своего приложения и предназначен. И он, кстати, не блокирует вьюху.
Ну а для реальных запросов на другие ресурсы - requests скорей всего правильно советуют.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
04.04.2018, 02:53
Цитата Сообщение от lapitsky Посмотреть сообщение
есть страница, которая получает через форму данные, дальше эти данные отправляются на сторонний сайт (нода или сервер), там эти данные обрабатываются и отправляется обратно ответ о том, что обработано ок.
Цитата Сообщение от Garry Galler Посмотреть сообщение
Ну а для реальных запросов на другие ресурсы - requests скорей всего правильно советуют.
Для обхода cross origin еще с допотопных времён используют проксирование через свой сервер. Для этого requests подходит лучше всего.

Если нужно перевызвать код к которому есть доступ или обратиться к серверу к которому есть доступ, проще настроить политики доступа или вызывать код напрямую (в обход сетевого стека). Сеть это всегда долго, как и работа с диском и т.д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2018, 02:53
Помогаю со студенческими работами здесь

ошибка 500 при jax запросе на контроллер
Здравствуйте. Подскажите пожалуйста в чем может быть причина ошибки. При имитации запроса на метод контроллера в postman данные успешно...

Post запрос связанный с базой данных (ошибка 500)
В общем вопрос, в чем ошибка в методе post, первый раз пытаюсь что-то написать на javascript, задача, чтобы то, что будет написано на...

Ошибка в POST запросе
При отправке post запроса на сайт(https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md) ,приходит ошибка. ...

Ошибка в POST запросе
Добрый день, столкнулся с ошибкой при отправке POST запроса, сервер выдает ответ : &quot;403 Запрещено&quot;. Куки получаю, записываю,...

Ошибка пр выполнении https post запроса(500 internal server error)
Добрый день. Подскажите пож. в чём может быть ошибка. При размещении на сервер появляется ошибка - 500 Internal Server Error. Вот код: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru