Периодически извлекайте данные и отображайте их с помощью Django
Я хотел бы реализовать своего рода систему уведомлений в режиме реального времени в моем приложении Django.
Я хотел бы хранить некоторые сообщения, предназначенные для конкретного пользователя в моей базе данных. Когда пользователь входит в приложение, если для него есть уведомление в базе данных, приложение отображает его с помощью платформы сообщений. Когда он нажимает на сообщение, оно удаляется из базы данных.
Я немного застрял на "ежеминутном извлечении данных". Я слышал о сельдерее ( http://docs.celeryproject.org/en/latest/), но я хотел бы быть уверен, что это путь туда, прежде чем погрузиться, потому что это кажется немного сложным в настройке и использовать.
Если есть простой способ демонизации функции django, или если что-то похожее на то, что я хочу сделать, уже существует, я был бы признателен за любую подсказку!
2 ответа
Если это простая задача, вы можете сделать с Ajax.
Просто объявите один URL для запроса ajax:
#urls.py
...
url(r'^ajax/my_query$', my_app.views.ajax_processor)
...
тогда в вашем my_app/views.py
:
#views.py
def ajax_processor(request):
... do the processing you want as if it is a normal web request.
... like querying the database
... you can return a `json` dictionary
... or a normal `render_to_response` template with html
Это следует делать на стороне сервера. На стороне клиента было бы неплохо использовать jQuery с $.ajax
функционировать и сделать это:
$.ajax({
url:'/ajax/my_query', // a normal get request
success:function(data){ // success is the callback when the server responds
/* if is json what you decided to return then process the json dict
if is normal html render it wherver you want
*/
}
});
Это простая установка, немного кода на стороне сервера и немного кода на стороне клиента.
Если вы планируете разрабатывать приложения для работы в режиме реального времени, вам следует полагаться на более совершенную библиотеку, но если вам нужно выполнить только небольшой запрос асинхронно, вы можете рассмотреть этот способ.
Вот хорошее и простое руководство по ajax, предоставленное W3Schools, чтобы помочь вам понять Ajax, и здесь вы можете найти полезную информацию о опросе с помощью ajax/jquery.
Удачи!
Вот несколько вариантов для рассмотрения:
сельдерей Да, это не так тривиально настроить, но его очень легко настроить и использовать со своей стороны python/django через django-celery. Также взгляните на периодические задачи сельдерея.
RQ (Redis Queue). Простая очередь заданий, которую легко настроить.
Джанго-хронограф. Создание и запуск заданий cron легко из команд администратора.
Также см: