【问题标题】:Send api request every x minutes and update context with status每 x 分钟发送一次 api 请求并使用状态更新上下文
【发布时间】:2021-06-13 23:37:09
【问题描述】:

我正在尝试创建一个网站,用户可以在其中单击按钮启动任务,该任务将每 x 秒/分钟发送一次 api 请求。 Api request 得到一个 offer 列表作为响应,任务会检查 api 请求是否和之前一样。

如果是,那么我想在我的页面上显示状态为:“未找到报价,仍在搜索”,如果 api 响应不同,则状态更改为:“我找到报价”

我想在后台进行该过程,而无需用户刷新页面。我希望在找到新报价时自动更新上下文[“状态”]。

我尝试通过线程来实现这一点,但页面在任务运行时继续加载。

每一个想法都值得赞赏。 谢谢!

【问题讨论】:

    标签: python django ajax web background


    【解决方案1】:

    虽然您可以使用 Ajax,但我更喜欢使用 websocket,因此更喜欢使用通道。查看本教程:https://realpython.com/getting-started-with-django-channels/https://blog.logrocket.com/django-channels-and-websockets/。网上有很多教程,也有像 Django 3 这样的例子(披露:我不是作者)。此外,channels 是一个官方的 Django 项目,它将在即将发布的版本中成为 Django 的一部分。

    【讨论】:

    • 感谢您的回答,我稍后会检查。
    【解决方案2】:

    在 django 中创建自定义结果视图,在页面上设置计时器,然后使用 jQuery.load()

    var l_timer = setInterval(function(){
        $( "#result" ).load( "/my_periodic_view", function() {
           alert( "Load was performed." );
        });
    },1000) //1000ms loop
    

    您将需要 jquery。更好的方法是使用 ajax 调用和 rest api(或取决于特定情况的套接字),但两者都需要在服务器上进行额外设置,如果您的应用程序不需要更多实时更新,则采用加载方法既便宜又容易直截了当。

    【讨论】:

    • 感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多