如何解决在 Python Django 中实现事件提醒功能 解决方法代码参考
我已经使用 Google Calendar API 在我们的 Django 应用程序中实现了一个事件模块,并且我已经设置了事件的提醒时间,现在我必须在我的应用程序中开始事件之前获得提醒通知,但是仅由 Google Api 提供的交付机制是
弹出窗口。这些在移动平台和网络客户端上均受支持。
服务器发送的电子邮件。
而且他们没有提供任何这些类型的功能,我可以从 Google 日历向我们的应用程序发送提醒。我已经尝试过 push notifications 的 Google Calendar API,但它具有不同的功能。
解决方案:我有另一种选择来使用 celery beat 来实现这一点,并且可以编写 cron 作业,但在特定时间之后从数据库中检查可能会很昂贵间隔,是否有与事件提醒匹配的时间然后推送通知。如果事件数据是大规模的,那将是一项忙碌的工作。
解决方法
目前在 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();
}
参考
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。