【问题标题】:Implement Reminder Functionality For Events in Python Django在 Python Django 中为事件实现提醒功能
【发布时间】:2021-01-04 11:01:10
【问题描述】:

我已经在我们的 Django 应用程序中使用Google Calendar API 实现了一个事件模块,并且我已经设置了事件的提醒时间,现在我必须在我的应用程序中启动事件之前获得提醒通知,但是传递机制仅由 Google API 提供的是

弹出窗口。这些在移动平台和网络客户端上受支持。

服务器发送的电子邮件。

而且他们没有提供任何这些类型的功能,我可以从 Google 日历获取提醒到我们的应用程序。我曾尝试使用 Google Calendar API 的 push notifications,但它具有不同的功能。

解决方案:我有另一个选项可以使用 celery beat 实现此目的,并且可以编写 cron 作业,但在特定时间间隔之后从数据库中检查可能会很昂贵,是否有时间匹配事件提醒然后推送通知。如果事件数据是大规模的,那将是一项繁重的工作。

我正在寻找提供提醒功能的最佳解决方案或任何第三方工具。

【问题讨论】:

    标签: python-3.x django google-calendar-api reminders


    【解决方案1】:

    目前在 Google 问题跟踪器上有一个开放的功能请求,以添加用于日历提醒的 API。

    在这种情况下,您可以做的是在问题 here 上加注星标,并最终添加一条评论说明您需要此功能。

    解决方法

    您可以利用 Apps Script 的时间驱动触发器来触发 Python 脚本的执行。

    在这种情况下,您必须在 Apps 脚本中收集事件并检查它们的开始时间。如果开始时间小于事件的开始时间,您将触发 Python 脚本的执行。就 Python 脚本的执行而言,您可以将其托管在私有服务器或云端并触发其执行。

    代码

    function getEvents() {
        let today = new Date();
        let calendar = CalendarApp.getCalendarById(id);
        let events = calendar.getEventsForDay(today);
        let startTime = today.getHours();
        let params = {
            'method': 'post',
            'headers': {
               'contentType': 'application/json',
            },
            'payload':'payload'
    
        };
        for (let i = 0; i < events.length; i++) {
            if (events[0].getStartTime() <= startTime) {
                UrlFetchApp.fetch('python_script_url', params);
            }
        }
    }
    
    

    至于确保getEvents函数被执行,您可以添加一个可安装的时间驱动触发器,例如每10分钟运行一次以触发上述函数的执行。

    function createTrigger() {
        ScriptApp.newTrigger('getEvents')
            .timeBased()
            .everyMinutes(10)
            .create();
    }
    

    参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 2019-11-20
      相关资源
      最近更新 更多