Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/55: Рейтинг темы: голосов - 55, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 18.12.2019
Сообщений: 42

Передать файл через JSON объект

09.01.2020, 15:17. Показов 12213. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли как то передать файл в объекте JSON через сокет ?

Вот что я пытался сделать

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import socket, json, time
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('srvapp005dev', 81))
 
# data = input('Отправить сообщени серверу: ')
# data = json.dumps({"RequestType": 1, "Sender": 8701, "Receiver": 8771, "MsgBody": data}, ensure_ascii=False).encode("utf-8")
 
person = []
 
try:
    f = open("index.jpg", "rb")
    b = f.read(1)
    str = ""
    while True:
        b = f.read(1)
        if b == b'':
            break
        str += b.hex()
    print(str)
    f.close()
except IOError:
    print('error')
 
data = json.dumps({"RequestType": 1,    "Sender": 8701, "Receiver": 8771, "MsgBody": str}, ensure_ascii=False).encode("utf-8")
 
client.send(data)
 
print(data)
# time.sleep(10)
 
from_server = client.recv(1024)
 
client.close()
print(from_server.decode())
На другом конце когда получает этот объект, то он попадает в

json.loads(in_request.decode())

Здесь in_request тот самый переданный data.

И тут ошибка


jsn_request = json.loads(in_request.decode())
File "/usr/lib64/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python3.6/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 65 (char 64)


Что я не правильно ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2020, 15:17
Ответы с готовыми решениями:

Как передать json-объект в параметре массива php через file_get_contents?
Приветствую! Ломаю голову не первый час, поиски не увенчались успехом. Есть массив параметров, которые отправляются по file_get_contents: ...

Через JSON файл передать ENUM в C# приложение
Всем привет! Есь приложение на шарпе, где надо считать файл JSON и значениями из файла проинициализировать переменные программы. Пока...

Передать массив через JSON
Всем привет. У меня есть на странице функция, которая через $.ajax передает значения серверу. В контроллере есть функция, которая принимает...

27
0 / 0 / 0
Регистрация: 18.12.2019
Сообщений: 42
10.01.2020, 13:03  [ТС]
Студворк — интернет-сервис помощи студентам
Ога. Каждый 10 секунд 100К пользователей делают запрос и сервер тоже 100К раз проверяет БД и файловые сервера. Бред.
highload - не означает что, там есть миллионы не нужных обращении на БД идет.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
10.01.2020, 13:03
Здесь сервер - это приложение.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
10.01.2020, 13:04
Цитата Сообщение от antihacker1981 Посмотреть сообщение
сервер тоже 100К раз проверяет БД
Я насчитал 3K RPS. Нет, не бред.
0
0 / 0 / 0
Регистрация: 18.12.2019
Сообщений: 42
10.01.2020, 13:13  [ТС]
Может я и не профи в Python, но уже 20 лет занимаюсь проектированием на других техналогиях. В основном связаны с БД. Последние 5 лет в Интерпрайзе.

Добавлено через 31 секунду
Делать не нужный запрос - это уже бред.

Добавлено через 6 минут
Практика показала, что из всех онлайн клиентов только 20% имеют записи в БД в один момент. Значит 80К пустых запросов. А тут сервер запросом вытаскивает новые записи и вешает на сокеты через epool(). И все. Забирают адресаты. Остальные просто слушают. Не заставляет сервер делать 80К запоров каждые 5 секунд.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
10.01.2020, 14:23
Возьмите вместо сокетов готовый транспорт. Джаббер тот же. И пвер него передавайте хоть json, хоть кастомный тип сообщений сделайте.

Добавлено через 59 секунд
Даже яндекс так делал, не помню для каких проектов.
0
0 / 0 / 0
Регистрация: 18.12.2019
Сообщений: 42
10.01.2020, 15:50  [ТС]
Зачем кастомный(левый) когда есть вполне работающий механизм. Практика показала, что чем меньше "левых компонентов тем меньше подводных камней. И дешевле сопровождать. Я видел проекты, где они застряли через 3 года из за того что фреймворк ,которыми они пользовались , перестал поддерживаться. А другой начал глючить и они потеряли клиентов.

Добавлено через 1 час 3 минуты
Помогите разобраться

вот здесь ошибка

HTML5
1
2
3
4
5
6
          tmp = lst_connections[fileno].recv(1024)
 
                while tmp:
                    lst_requests[fileno] += tmp
                    print(tmp)
                    tmp = lst_connections[fileno].recv(1024)

Ошибка:
tmp = lst_connections[fileno].recv(1024)
BlockingIOError: [Errno 11] Resource temporarily unavailable

но проблема происходит после того как получены все данные. Оно и правильно. После полутени всех данных сокет закрывается. Как выйти из ситуации
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.01.2020, 15:57
Если вы установили сокет в неблокирующий режим, ввод-вывод на этом сокете немедленно завершится исключением, если нет данных для чтения.
0
0 / 0 / 0
Регистрация: 18.12.2019
Сообщений: 42
10.01.2020, 16:22  [ТС]
А как проверить сокет ? Закрыть или нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2020, 16:22

Можно ли через JSON передать гиперссылку?
Добрый день! Есть массив данных из БД, передаваемый через php-скрипт в JSON для дальнейшего вывода на сайте. Один из элементов -...

Добавить новый объект в существующий файл json
Здравствуйте. Возможно ли добавить новый объект к уже существующему? Пример того, что я хочу: ...

Как передать объект через сокеты в c#
Мне необходимо использовать именно сокеты. Есть допустим класс class Message{ public String type; public String...

Не выходит передать объект через форму
Всем привет! Идея передать объект с одной формы -> на другую. Не получается!) Где я совершаю ошибку? подскажите пожалуйста) Из главной...

Как правильно передать в контроллер json файл?
Здравствуйте, как корректно передать в Web api json файл в контроллер. Загрузка происходит с помощью: <input type="file"...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru