定时任务、异步任务

------------定时任务、异步任务--------

pip install celery --target=D:\Users\ex-ouyangl003\PycharmProjects\data_new\dg_meta_system\metadata_system\venv\Lib\site-packages

 

# coding:utf-8

from apscheduler.schedulers.blocking import BlockingScheduler

import datetime

def aps_test():

print datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '你好'

scheduler = BlockingScheduler()

scheduler.add_job(func=aps_test, trigger='cron', second='*/5')

scheduler.start()

 

 

scheduler.add_job(func=aps_test, args=('定时任务',), trigger='cron', second='*/5')

scheduler.add_job(func=aps_test, args=('一次性任务',), next_run_time=datetime.datetime.now() + datetime.timedelta(seconds=12))

scheduler.add_job(func=aps_test, args=('循环任务',), trigger='interval', seconds=3)

 

backend='redis://:109321@10.35.163.24:6379/7’, # 返回值存入数据库

broker='redis://:109321@10.35.163.24:6379/8') # :密码@host/post/db

 

# -----windows celery

Windows的Celery只支持到3.1.25

pip install celery==4.3.0

pip install eventlet

celery -A app.tasks.meta.tasks worker -l info -P eventlet

celery -A app.tasks.meta.tasks worker --loglevel=info

celery -A app.celery worker --loglevel=info

 

tasks.task_name.delay()

t.ready()

t.get()

t.get(timeout=11)

t.get(propagate=False)

t.traceback

 

CELERY_TIMEZONE='Asia/Shanghai'

CELERY_ENABLE_UTC=True

# 官网推荐消息序列化方式为json

CELERY_ACCEPT_CONTENT=['json']

CELERY_TASK_SERIALIZER='json'

CELERY_RESULT_SERIALIZER='json'

 

请求耗时(比如大量的数据库插入,发送验证邮件等)

利用Celery来后台处理耗时任务可以保证Flask能够较快响应而且不被阻塞,同时减轻了数据库的高峰写入压力

操作数据库,操作完成后记得释放数据库连接,例如Session.remove

 

Celery是专注实时处理和任务调度的分布式任务队列。

主要应用场景:

1,web应用,当需要触发事件需要较长时间处理完成,可以交给celery进行异步执行,执行完后返回结果,这段时间不用等待,提高系统的吞吐量和响应时间

2,完成任务时,需要额外的事件处理,如发送邮件等

3,后台定时任务处理,celery可以帮助我们在不同服务器进行定时任务管理

posted @ 2021-02-07 23:29  涛子17180  阅读(168)  评论(0编辑  收藏  举报