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

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

01.04.2018, 20:41. Показов 9394. Ответов 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru