安装依赖:
pip install redis
pip install django
-
celery
-
beat
配置setting.py
TIME_ZONE
=
'Asia/Shanghai'
# 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,此时的TIME_ZONE不管有没有设置都不起作用
# 如果USE_TZ 设置为False,TIME_ZONE = 'Asia/Shanghai', 则使用上海的UTC时间。
USE_TZ
=
False
INSTALLED_APPS
=
(
...,
'django_celery_beat'
,
)
# celery beat配置
# CELERY_ENABLE_UTC = False
CELERY_TIMEZONE
=
TIME_ZONE
DJANGO_CELERY_BEAT_TZ_AWARE
=
False
CELERY_BEAT_SCHEDULER
=
'django-celery-beat.schedulers.DatabaseScheduler'
# celery 的启动工作数量设置
CELERY_WORKER_CONCURRENCY
=
10
# 任务预取功能,会尽量多拿 n 个,以保证获取的通讯成本可以压缩。
CELERYD_PREFETCH_MULTIPLIER
=
20
# 有些情况下可以防止死锁
CELERYD_FORCE_EXECV
=
True
# celery 的 worker 执行多少个任务后进行重启操作
CELERY_WORKER_MAX_TASKS_PER_CHILD
=
100
# 禁用所有速度限制,如果网络资源有限,不建议开足马力。
CELERY_DISABLE_RATE_LIMITS
=
True
# 设置代理人broker
CELERY_BROKER_URL
=
'redis://127.0.0.1:6379/2'
# 指定 Backend
CELERY_RESULT_BACKEND
=
'redis://127.0.0.1:6379/1'
生成数据库:
python manage.py migrate
setting.py同级目录下生成celery.py文件
import
os
from
celery
import
Celery, platforms
from
celery.schedules
import
crontab
from
django.conf
import
settings
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE"
,
"django_server.settings"
)
app
=
Celery(
"django_server"
)
app.config_from_object(
"django.conf:settings"
, namespace
=
"CELERY"
)
# 定时任务的存放位置
app.autodiscover_tasks([
"demoapp.tasks"
,
])
同级目录__init__.py文件 :
from .celery import app as celery_app __all__ = ('celery_app',)
提交评论
您尚未登录,登陆之后方可评论 登录 or 注册