当前位置: 首页 > news >正文

推荐网站建设学校网站建设问卷调查

推荐网站建设,学校网站建设问卷调查,衡水稳定的网络建站,h5响应式网站建设方案Celery 定时任务教程 Celery 是一个强大的异步任务队列/作业队列基于分布式消息传递的开源项目。它广泛用于处理各种类型的后台任务,例如发送电子邮件、处理图像、数据分析和视频转换等。 本文将介绍如何使用 Celery 实现定时任务,包括: 安…

Celery 定时任务教程

Celery 是一个强大的异步任务队列/作业队列基于分布式消息传递的开源项目。它广泛用于处理各种类型的后台任务,例如发送电子邮件、处理图像、数据分析和视频转换等。

本文将介绍如何使用 Celery 实现定时任务,包括:

  • 安装 Celery
  • 配置 Celery
  • 定义定时任务
  • 启动 Celery worker 和 beat

1. 安装 Celery

首先,您需要安装 Celery。可以通过以下命令进行安装:

pip install celery

2. 配置 Celery

在django项目主文件夹下(即settings.py同目录)创建一个名为 celery.py 的文件,并添加以下代码:

import osfrom django.conf import settingsfrom celery import Celery
from celery.schedules import crontab# Set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MainConfig.settings')app = Celery('MainConfig')# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')# Load task modules from all registered Django apps.
app.autodiscover_tasks()# 定时任务配置
app.conf.beat_schedule = {'schedule_task': {'task': 'myapp.tasks.add', # 任务代码所在文件'schedule': crontab(hour='*/3'),  # 每3小时执行一次},
}@app.task(bind=True, ignore_result=True)
def debug_task(self):print(f'Request: {self.request!r}')

这里,我们使用 redis作为消息代理。

crontab示例

例子意义
crontab()每分钟执行一次。
crontab(minute=0, hour=0)每天午夜执行。
crontab(minute=0, hour='*/3')每三小时执行一次:午夜、凌晨 3 点、早上 6 点、早上 9 点、中午、下午 3 点、下午 6 点、晚上 9 点。
crontab(minute=0, hour='0,3,6,9,12,15,18,21')与以前相同。
crontab(minute='*/15')每15分钟执行一次。
crontab(day_of_week='sunday')每周日每分钟执行一次(!)。
crontab(minute='*', hour='*', day_of_week='sun')与以前相同。
crontab(minute='*/10', hour='3,17,22', day_of_week='thu,fri')每十分钟执行一次,但仅限于周四或周五凌晨 3 点至 4 点、下午 5 点至 6 点和晚上 10 点至 11 点之间。
crontab(minute=0, hour='*/2,*/3')每双数小时和每个能被三整除的小时执行。这意味着:除以下时间外的每个小时:凌晨 1 点、凌晨 5 点、早上 7 点、上午 11 点、下午 1 点、下午 5 点、晚上 7 点、晚上 11 点
crontab(minute=0, hour='*/5')执行可被 5 整除的小时。这意味着它是在下午 3 点触发,而不是下午 5 点(因为下午 3 点等于 24 小时制时钟值“15”,可以被 5 整除)。
crontab(minute=0, hour='*/3,8-17')每个能被 3 整除的小时执行一次,办公时间(上午 8 点至下午 5 点)每小时执行一次。
crontab(0, 0, day_of_month='2')每月第二天执行。
crontab(0, 0, day_of_month='2-30/2')在每个双数日执行。
crontab(0, 0, day_of_month='1-7,15-21')在每月的第一周和第三周执行。
crontab(0, 0, day_of_month='11', month_of_year='5')每年五月十一日执行。
crontab(0, 0, month_of_year='*/3')每季度第一个月每天执行。

settings.py相关配置

#从环境变量中读取服务网络
REDIS_SERVER_URL = os.environ.get('REDIS_SERVER_URL',"127.0.0.1")
# redis 配置
CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": f"redis://{REDIS_SERVER_URL}:6379/1","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}}
}# celery
CELERY_BROKER_URL = f"redis://{REDIS_SERVER_URL}:6379/0"
CELERY_RESULT_BACKEND = f"redis://{REDIS_SERVER_URL}:6379/0"
CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True
CELERY_TASK_SERIALIZER = "json"
CELERY_RESULT_SERIALIZER = "json"
CELERY_ACCEPT_CONTENT = ["json"]
CELERY_TIMEZONE = "Asia/Shanghai"
CELERY_ENABLE_UTC = True

在django主项目目录的__init__文件下加入以下代码

from .celery import app as celery_app__all__ = ('celery_app',)

3. 定义定时任务

在您的项目中创建一个名为 tasks.py 的文件,并添加以下代码:

from celery import shared_task@shared_task
def add(x, y):return x + y

这里,我们定义了一个名为 add 的任务,它接受两个参数 xy 并返回它们的和。

5. 启动 Celery worker 和 beat

使用以下命令启动 Celery worker 和 beat:

celery -A MainConfig worker -l info -P threads
celery -A main beat --loglevel=info

这里,-A 指定当前目录作为工作目录,--loglevel=info 设置日志级别为 info

总结

使用 Celery 实现定时任务非常简单。只需按照上述步骤进行配置,即可轻松实现各种复杂的定时任务。

http://www.yayakq.cn/news/679380/

相关文章:

  • 网站seo外链平台专门做礼物的网站
  • 巩义网站建设优化公司360网站怎么做ppt
  • 做外贸的阿里巴巴网站是哪个更好营销型外贸网站建设
  • 高端摄影网站模板58同城泉州网站建设
  • 织梦网站怎么搬家西安的电商网站设计
  • 电商网站可维护性医院网站建设模板
  • 网站流量统计系统企业版网站模式下做淘宝客
  • flash网站价格300平私人会所装修设计
  • 网站建设 好牛免费网站设计神器
  • 怎么做网站二级页面渠道网络公司官网
  • 建设网站平台的章程做饼干的网站
  • 网页设计小白做网站.net 网站中多线程
  • 深圳有做网站的公司网站的结构类型
  • 做短视频的网站都有哪些hreflang wordpress
  • 简单网上书店网站建设php衡水网站建设的地方
  • 网站开发新技术温州市网站建设哪家公司好
  • 卖营销软件的网站宁波seo专员
  • 黄山市网站建设i18n wordpress
  • 工具站seo关键词优化步骤简短
  • 学校教育网站模板如何做国际贸易网站
  • 空间ip地址访问网站手机app设计软件有哪些
  • 网站模板编辑软件增城做网站要多少钱
  • 企业网站建站源码平面设计海报作品欣赏
  • 在国外建网站方便吗ui培训班 qfedu
  • 万州做网站多少钱企业网站的特点
  • 响应式网站建设方案东莞营销网站
  • 奢侈品网站模板中国核工业第二二建设有限公司招聘
  • 做网站的时候表格怎么去掉途牛的旅游网站是谁做的
  • 网站建设公司销售企业网站建设的几种形式
  • 商城网站开发多少钱有网站想修改里面的内容怎么做