首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同时区的时间表

不同时区的时间表
EN

Stack Overflow用户
提问于 2018-01-04 05:50:36
回答 1查看 2.8K关注 0票数 2

我正在开发一个Django项目。

我想自动同步类。

我的代码:

代码语言:javascript
复制
from datetime import timedelta
from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
'sync-classes': {
    'task': 'scheduler.tasks.sync_classes',
    'schedule': crontab(hour='0', minute=0),
}

CELERY_ENABLE_UTC = False
CELERY_TIMEZONE = 'Europe/London'

它在伦敦时区工作。

每个类都有不同的时区。我希望计划能够根据相关的类时区自动运行。

sync_classes()方法中,我获取所有类并在伦敦时区同步它。

问题:如何根据其时区同步每个类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-04 07:10:35

当涉及Django/芹菜部分时,这段代码是未经测试的,但是下面是这样的想法:

  1. 改变你的芹菜拍子的时间表,每15分钟跑一次。这几乎涵盖了存在的所有TZ偏移量,因为大多数情况下要么是小时的倍数,要么是半小时的倍数,只有少数情况是四分之一小时的倍数(因此,这15分钟的决议应该涵盖世界上所有的时区偏移): CELERYBEAT_SCHEDULE ={“同步-类”:{“任务”:“调度器.tasks.sync_classes”,“调度”:crontab(分钟=‘*/15’),} CELERY_ENABLE_UTC = False CELERY_TIMEZONE = 'Europe/London‘ 在这一点上,芹菜的时区并不重要,因为我们将使用唯一合适的时区作为参考: UTC。
  2. 创建一个辅助函数,为您提供now ("now“意思是”运行任务时“)”几乎“午夜的时区名称。你的任务每15分钟一次.也许在15分钟之后几毫秒.所以让我们给它10分钟的缓冲区(应该是这样, way 就够了)。只要缓冲区小于15分钟,您就应该没事(这意味着您不会有一个任务,而下一个想法是“现在”是午夜,因此您将两次运行同步)。 这应有助于: 导入pytz导入日期时间utc_now = pytz.utc.localize(datetime.datetime.utcnow()) collected_tz_names = [] in pytz.all_timezones_set: test_dt = utc_now.astimezone(pytz.timezone( tz ))打印(“tz:%s,test_dt.time() %s”% (tz,test_dt.time() is_midnight =( datetime.time(hour=0,minute=0 ),( second=0) <= test_dt.time() <= datetime.time(hour=0,minute=10,second=0)如果is_midnight: collected_tz_names.append(tz)打印(“collected %s”% collected_tz_names) 如果您想测试它,请将utc_now = pytz.utc.localize(datetime.datetime.utcnow())“探测”(或引用)更改为几个手动值,如utc_now = pytz.utc.localize(datetime.datetime(year=2018, month=1, day=4, hour=4, minute=1, second=0))
  3. 收集了nowcollected_tz_names列表中午夜的时区之后,运行同步方法。假设您需要同步的对象是User,对吗?并且您的User模型有一个属性tz_name,它指示每个用户的时区。在这种情况下,这应该可以做到: User.objects.filter(tz_name__in=collected_tz_names):user.synchronize()中的用户

请记住,在日光节省时间开关中,您可能会同步两次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48089414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档