我想在我的Django应用程序中实现一种“实时”通知系统。
我会在我的数据库中存储一些发往特定用户的消息。 当用户登录应用程序时,如果数据库中有他的通知,则应用程序使用消息框架显示它。 当他点击该消息时,它将从数据库中删除。
我有点卡在“每分钟获取数据”的事情上。我听说过芹菜(http://docs.celeryproject.org/en/latest/#),但我想确定它是潜水之前去那里的方式,因为设置和使用似乎有点复杂。
如果有一种简单的方法来守护django功能,或者如果类似于我想要做的事情已经存在,我将不胜感激!
答案 0 :(得分:2)
如果只是一个简单的任务,你可以使用Ajax。
只需为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
这应该在服务器端进行。在客户端,使用带有$.ajax
函数的jQuery会很可爱并执行此操作:
$.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
*/
}
});
只是一个简单的设置,服务器端的一些代码和客户端的一些代码。
如果您计划开发一个基于实时的重度应用程序,那么您应该依赖一个更好的库,但如果您只需要异步执行一些查询,那么您可以考虑这种方式。
W3Schools提供的Here is a good and simple ajax tutorial帮助您理解Ajax,here您可以找到有关使用ajax / jquery进行轮询的有用信息。
祝你好运!答案 1 :(得分:1)
以下是一些需要考虑的选项:
celery。是的,设置并不是那么简单,但是通过django-celery从python / django端进行配置和使用非常容易。另请参阅芹菜periodic tasks。
rq(Redis Queue)。简单的作业队列,易于设置。
django-cronograph。从管理员命令轻松创建和运行cron作业。
另见: