celery
http://docs.jinkan.org/docs/celery/getting-started/introduction.html?tdsourcetag=s_pcqq_aiomsg
redis
任务队列(异步任务)、定时任务
===================
1、本步骤的内容可放在项目的init.py 文件中。celery容易产生循环引用。
import celery
# 注册环境变量(注册Django配置文件)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'teamproject.settings')
# 创建Celery的实例 - broker代表消息代理(从哪里获取消息队列服务)
app = celery.Celery('teamproject',
broker='redis://47.107.170.191/2')
# 读取Django项目的配置信息
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda : settings.INSTALLED_APPS)
# celery -A teamproject worker -l info &
# 使用Windows 10做开发且使用celery 4.x版本需要先安装一个三方库作为辅助
# pip install eventlet
# 然后启动celery的消费者的时候需要多加一个参数
# celery -A teamproject worker -l info -P eventlet
2、本步骤的内容可放在项目的init.py 文件中。celery容易产生循环引用。
# 配置定时任务
app.conf.update(
timezone=settings.TIME_ZONE,
enable_utc=True,
# 定时任务要通过消息的生产者将其转换成队列中的消息
# celery -A teamproject beat -l info
beat_schedule={
'task_one': {
'task': 'common.task.excel', #任务(视图函数)位置
'schedule': crontab(),#crontab是对时间设置的函数,默认每分钟发布一个定时任务。
# 'args': ('刘强东,奶茶妹妹喊你回家喝奶啦', )
},
'task_two': {
'task': 'common.tasks.auto_export_excel', #任务(视图函数)位置
'schedule': crontab(), #crontab是对时间设置的函数,默认每分钟发布一个定时任务。
# 'args': ('刘强东,奶茶妹妹喊你回家喝奶啦', )
},
},
)
3、输入命令
#定时发布任务命令(celery会将定时和异步任务放在 'redis://47.107.170.191/2')
celery -A teamproject beat -l info &
#执行任务命令
celery -A teamproject worker -l info &
#注意:异步任务需要用 @app.task 装饰要执行的异步任务
#例如:
@app.task
def add(x,y):
return x+y
====================