1

我想在我的 Django 应用程序中实现一种“实时”通知系统。

我会在我的数据库中存储一些发往特定用户的消息。当用户登录到应用程序时,如果数据库中有针对他的通知,则应用程序使用消息框架显示它。当他单击该消息时,它会从数据库中删除。

我有点坚持“每分钟获取数据”的事情。我听说过 celery ( http://docs.celeryproject.org/en/latest/# ),但我想确定这是在潜入之前去那里的方法,因为设置和设置似乎有点复杂采用。

如果有一种简单的方法来守护 django 函数,或者如果已经存在与我想做的类似的事情,我将不胜感激任何提示!

4

2 回答 2

2

如果只是一个简单的任务,您可以使用 Ajax。

只需为 ajax 查询声明一个 URL:

#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 提供的一个很好且简单的 ajax 教程,可帮助您了解 Ajax,在这里您可以找到有关使用 ajax/jquery 进行轮询的有用信息。

祝你好运!

于 2013-05-13T14:13:04.687 回答
1

以下是一些需要考虑的选项:

  • 芹菜。是的,设置起来并不是那么简单,但是通过django-celery从你的 python/django 端配置和使用它非常容易。还要看看 celery周期性任务

  • rq(Redis 队列)。易于设置的简单作业队列。

  • django-cronograph。从管理命令轻松创建和运行 cron 作业。

另见:

于 2013-05-13T13:31:37.953 回答