55 / 55 / 16
Регистрация: 25.03.2013
Сообщений: 178
|
|
1 | |
Как в Django посылать асинхронный запрос?04.08.2017, 01:54. Показов 4082. Ответов 4
В серверной кухне я не силен...да и в программировании тоже..но..вообщем есть проект на django1.8. Вопрос вот в чём: с клиентской стороны пользователем посылаются запросы с url'ами изображений со стороннего сервиса(запросов может быть много, скажем несколько десятков - в каждом по урлу). Соответственно при обработке на бэкенде в django вьюхе осуществляется посылка запросов на сторонний сервис чтобы закачать изображение в ImageField. Я правильно думаю что при ожидании ответа со стороннего сервиса worker будет простаивать или как написано здесь... Блокируется ли выполнение треда приложения до получения ответа независимо от того где оно задеплоино и с какими настройками? Можно ли это как-нибудь проверить? Я так понимаю что скорее всего мне нужно отсылать асинхронный запрос, но пока не совсем понял как это реализовать. Реально ли использовать grequests или requests-futures в django? Просто скажем время ожидания ответа от скажем 10-го запроса при закачке получается довольно большим - больше минуты. Конечно и разрешение картинок тоже большое - 5000*3000px... Или же я заблуждаюсь и моя проблема не в этом? Если нужно больше конкретики - задавайте вопросы постараюсь ответить.
0
|
04.08.2017, 01:54 | |
Ответы с готовыми решениями:
4
Как посылать запрос к БД в формате UTF-8? Как сделать асинхронный запрос? Как выполнить асинхронный запрос? Как превратить синхронный запрос, в асинхронный? |
530 / 385 / 247
Регистрация: 31.05.2016
Сообщений: 1,049
|
|
04.08.2017, 02:48 | 2 |
Я так понимаю что для подобных задач нужно использовать очередь задач.
Например: Celery или django-background-tasks.
1
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,242
|
|
05.08.2017, 00:23 | 3 |
Сколько юзеров единрвременно?
Чего юзер ждет от этого сервиса? Т.е. если юзер должен проконтролировать результат - пусть ждет. Если же он не будет контролировать процесс - вам юзеры натолкают мусора на сервер и даже не посмотрят - что там загрузилось.
0
|
Просто Лис
|
|
05.08.2017, 06:15 | 4 |
Ха! Некоторые юзеры будут несколько раз кликать кнопку загрузки, подумав, что та не нажалась или всё зависло. Предложенный демон Celery хорошо подходит, а если нужно показывать процесс задачи или просто показывать выполнилась задача или нет, то это дописывается отдельно.
Добавлено через 15 минут Юзеры натолкают мусор в любом случае, просто добавить минимальную валидацию на размер/типа/расширение файла.
0
|
55 / 55 / 16
Регистрация: 25.03.2013
Сообщений: 178
|
|
07.08.2017, 00:29 [ТС] | 5 |
Kifsif, насчёт единовременной нагрузки не уверен. нет информации пока. Юзер попросту осуществляет поиск изображения по запросу - мы посылаем запрос на сторонний сервис, получаем ответ отдаём урлы юзеры (здесь проблем нет). Проблемы начинаются когда пользователь выбирает картинку чтобы добавить в свою библиотеку изображений. С одной стороны мы должны сразу на клиенте отобразить её добавление (используем урлы со стороннего сервиса) - с другой стороны ожидать подтверждения от нашего сервера что мол запрос от бэкенда на сторонний сервис прошёл и изображение закачалось (заменить урл используемой картинке на урл с нашего сервака). Походу как то так...
sash23, Спасибо за ответ. Наверное celery и redis как раз подойдёт для массового добавления изображений...осталось разобраться как его использовать я правильно понимаю что для моих задач также придётся использовать вебсокеты?
0
|
07.08.2017, 00:29 | |
07.08.2017, 00:29 | |
Помогаю со студенческими работами здесь
5
Django ORM запрос с подзапросом или переведите SQL в запрос Django ORM Как выполнить асинхронный запрос к SQL БД используя ADO? [Silverlight] Как правильно выполнить асинхронный запрос к сервису и отобразить на страничке? Асинхронный запрос на сервер с использованием callback. Не могу понять как это делается Какой запрос нужно посылать прокси серверу при соединении с ним? Django Queryset как создать такой запрос? Как правильно отправлять запрос из вне в django? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |