Отправка данных на сайт Django - PullRequest
0 голосов
/ 28 июля 2010

Я пытаюсь создать сервис django, в который многочисленные клиенты будут отправлять данные.Каждый клиент будет представлять аутентифицированного пользователя, который может быть подключен к Интернету или нет, поэтому клиент будет собирать данные и отправлять их, когда соединение доступно.Данные также должны храниться локально, чтобы к ним можно было быстро получить доступ, не обращаясь к серверу.

Природа данных проста.Это связано с игровыми достижениями, поэтому у каждого пользователя будет коллекция достижений, которых он достиг.Как следствие, нет проблем согласованности, поскольку каждый пользователь будет отправлять свою собственную статистику достижений, и ни один пользователь не будет редактировать чужие данные.

Я пытаюсь найти наиболее подходящее средство для этого.Моей первой мыслью были POST HTTP-запросы, которые обрабатывает сервер django.Клиент Python войдет в систему и «отправит» данные, выполнив эти запросы.Может кто-нибудь предложить лучшие альтернативы, или дать мне причины, почему эта установка подходит или нет?

Я также хотел бы знать, что бы вы предложили для формата / способа получения данных со стороны клиента.Я думал json или yaml

РЕДАКТИРОВАТЬ 2: Этот вопрос был обновлен после рекомендации С. Лотта.

Ответы [ 3 ]

2 голосов
/ 28 июля 2010

Многие люди, такие как Поршень для этого.

Мы катились самостоятельно (Piston еще не был опубликован).Да, вы можете тривиально обработать запрос RESTful POST с помощью полезной нагрузки JSON в Django.Однако ... Обработка REST в целом - это боль в шее, потому что отправка функции просмотра на основе метода (GET, POST, PUT или DELETE) не является частью Django.Вы можете запустить свой собственный диспетчер, основанный на методах, но, в конечном счете, вы будете недовольны решением, созданным по принципу «сами по себе».

Поршень не "лишние накладные расходы".То, что вы описываете, на самом деле не просто.Piston - это необходимое количество накладных расходов для этого.


«клиента, который объединяет эти вызовы в локальной базе данных и затем синхронизирует их с сервером».Слишком много сложностей.

Если эти события происходят с невероятно высокой скоростью (100 секунд в секунду), то вам понадобится многопроцессный интерфейс Apache, запускающий несколько серверов Django через mod_wsgi.

Но имеяклиенты, которые синхронизируются с центральной базой данных, будут слишком сложными.Слишком много открытых вопросов о сборе данных некоторыми клиентами и сбоях или двойной синхронизации клиентов, потому что кто-то запускал приложение дважды, а этого не должно было быть.Слишком много проблем с "синхронизацией базы данных".Избегайте этого.

0 голосов
/ 24 ноября 2015

Попробуйте Django Rest Framework с угловыми.

Вы можете использовать Django / Django Rest в качестве бэкэнда.

Для веб-интерфейса вы можете использовать angular или реагировать на jj с помощью nodejs или python simplehttp-сервера, либо работать grunt или gulp.

Таким образом, интерфейс будет связываться с сервером django для получения данных. Для входа в систему вы можете использовать аутентификационные и угловые куки.

Это также уменьшит нагрузку на бэкэнд-сервер, так как бэкэнд не должен обслуживать html / templates

0 голосов
/ 28 июля 2010

Я считаю, что xmlrpc будет правильным решением для этого. Вот пример: http://code.djangoproject.com/wiki/XML-RPC Мы использовали его на работе и работают довольно хорошо, поскольку наш сервер также предоставляет некоторые услуги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...