有业务线提出需求:要求对于其流量,只能在0点到7点扫描。

对此,celery发送任务到队列时可以指定执行的时间。

当worker收到任务后,判断还未到执行时间,会存储在worker中,在到达时候后再执行。

如果还未执行就中断worker,则任务会重新打回celery队列中,不担心丢失。

所以只需要传入time格式的具体执行时间就行。

Demo
import datetime

def in_run_time(start, end):
"""
用来给任务判断,在不在可执行的时间里,是不是需要丢到定时里
Args:
start: 任务开始执行的时间,格式如 "00:00:00"
end: 任务停止执行的时间,格式如 "07:00:00" Returns: """
current_date = str(datetime.datetime.now().date()) + " "
start_time = datetime.datetime.strptime(current_date + start, '%Y-%m-%d %H:%M:%S')
end_time = datetime.datetime.strptime(current_date + end, '%Y-%m-%d %H:%M:%S')
current_date = datetime.datetime.now()
if (start_time < current_date) and (current_date < end_time):
return True
else:
return False def get_nextday_run_time(start, end):
"""
根据当前时间,和起止时间,得出该任务应该执行的时间。
Args:
start: 任务开始执行的时间,格式如 "00:00:00"
end: 任务停止执行的时间,格式如 "07:00:00" Returns: """
current_date = datetime.datetime.now().date()
end_time = datetime.datetime.strptime(str(current_date) + " " + end, '%Y-%m-%d %H:%M:%S')
current_time = datetime.datetime.now()
# 如果现在还没到今天的执行时间,那么任务放到今天的执行时间来执行
if current_time > end_time:
current_date += datetime.timedelta(days=1)
run_time_str = str(current_date) + " " + start
# 执行-北京时间
run_time = datetime.datetime.strptime(run_time_str, '%Y-%m-%d %H:%M:%S')
run_time = run_time + datetime.timedelta(hours=-8)
return run_time def get_run_time_by_bj_time(bj_time):
"""
将时间格式字符串转换为datetime格式
Args:
bj_time: 指定执行时间 type-str 如 "2019-08-21 13:21:00" Returns: """
run_time = datetime.datetime.strptime(bj_time, '%Y-%m-%d %H:%M:%S')
run_time = run_time + datetime.timedelta(hours=-8)
return run_time start = "00:00:00"
end = "07:00:00"
work.apply_async(args=[scan_data], eta=get_nextday_run_time(start, end),
queue="队列名,没有可删除参数", routing_key="队列key,没有可删除参数")

celery指定任务执行时间的更多相关文章

  1. :setting:`task_soft_time_limit` celery 异步任务 执行时间限制 内存限制

    https://docs.celeryproject.org/en/stable/userguide/configuration.html?highlight=control_exchange#new ...

  2. 分布式任务队列Celery入门与进阶

    一.简介 Celery是由Python开发.简单.灵活.可靠的分布式任务队列,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务.Celery侧重于实时操作,但对调度支持也很好,其 ...

  3. python之celery的使用(一)

    前段时间需要使用rabbitmq做写缓存,一直使用pika+rabbitmq的组合,pika这个模块虽然可以很直观地操作rabbitmq,但是官方给的例子太简单,对其底层原理了解又不是很深,遇到很多坑 ...

  4. python之celery使用详解一

    前段时间需要使用rabbitmq做写缓存,一直使用pika+rabbitmq的组合,pika这个模块虽然可以很直观地操作rabbitmq,但是官方给的例子太简单,对其底层原理了解又不是很深,遇到很多坑 ...

  5. 使用Celery踩过的坑

    为什么要使用celery Celery是一个使用Python开发的分布式任务调度模块,因此对于大量使用Python构建的系统,可以说是无缝衔接,使用起来很方便.Celery专注于实时处理任务,同时也支 ...

  6. celery:强大的定时任务模块

    什么是celery 还是一个老生常谈的话题,假设用户注册,首先注册信息入库,然后要调用验证码服务接口,然后根据手机号发送验证码,最后再返回响应给浏览器.但显然调用接口.发送验证码之后成功再给浏览器响应 ...

  7. Celery分布式异步任务框架

    一.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统.专注于实时处理的异步任务队列,同时也支持定时任务 二.Celery架构 1.Celery的架构由三部分组成: 消 ...

  8. 使用SQLIO测试磁盘性能

    SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...

  9. 定时调度框架Quartz随笔

    最近项目中的定时批处理用到了quartz定时任务,在此记录下quartz的配置吧,一个小demo仅供参考,也方便自己今后复习! 下面直接来步骤吧! 一.首先,要搭起能让quartz正常运行的环境,至少 ...

随机推荐

  1. 通用mybatis单表操作接口

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  2. LeetCode 1022. 从根到叶的二进制数之和(Sum of Root To Leaf Binary Numbers)

    1022. 从根到叶的二进制数之和 1022. Sum of Root To Leaf Binary Numbers 题目描述 Given a binary tree, each node has v ...

  3. shell sed -i 指定内容追加.

    1.查看原文件中的内容 [root@testvm02 ~]# cat nrpe.cfg #command[check_users]=/usr/local/nagios/libexec/check_us ...

  4. CodeForces-166B-Polygons

    B. Polygons time limit per test:2 seconds memory limit per test:256 megabytes input:standard input o ...

  5. PAT甲级 Dijkstra 相关题_C++题解

    Dijkstra PAT (Advanced Level) Practice Dijkstra 相关题 目录 <算法笔记>重点摘要 1003 Emergency (25) <算法笔记 ...

  6. Python-08-内置函数

    详情 https://docs.python.org/3/library/functions.html?highlight=built#ascii 1. abs() 取绝对值 2. all() 如果可 ...

  7. 几个有益的 CSS 小知识

    样式的顺序 CSS 代码:   HTML 代码:   记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) 答案你们应该是知道的. 可以这样提升 CSS 性能 后代选择器 ...

  8. 从ftp获取文件并生成压缩包

    依赖 <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</a ...

  9. 关键字:__thread & pthread_key_t

    在说__thread之前,先来看看pthread_ket_t吧. 参考:http://blog.csdn.net/lmh12506/article/details/8452700 上面的博文说的比较通 ...

  10. win7实现tensorflow中的物体识别

    实现条件: 1.win7 2.python 3.运行所需要的库:matplotlib.lxml.pillow.Cython 具体参考:https://github.com/tensorflow/mod ...