白云怎样优化网站建设,网络推广服务开票,装饰设计公司哪个好,做网站找个人还是找公司好简单使用#xff1a;1.目录结构-app_task.py-worker.py-result.py2.在需要进行异步执行的文件app_task.py中导入celery,并实例化出一个对象#xff0c;传入消息中间和数据存储配置参数broker redis://127.0.0.1:6379/1 #使用redis第一个库backend redis://127.0.0.1:6379/2…简单使用1.目录结构-app_task.py-worker.py-result.py2.在需要进行异步执行的文件app_task.py中导入celery,并实例化出一个对象传入消息中间和数据存储配置参数broker redis://127.0.0.1:6379/1 #使用redis第一个库backend redis://127.0.0.1:6379/2 #使用redis第二个库cel celery.Celery(test,brokerbroker,backendbackend)3.在需要进行异步执行的函数上添加装饰器cle.taskdefadd(x,y):return xy4.新建文件worker.py用来添加任务from app_task importaddresult add.delay(4,2)print(result) #此结果不是add执行结果而是放入消息队列中的一个任务id5.新建文件result.py用来接收结果from celery.result importAsyncResultfrom app_task importcel#2e76b24d-364f-46b7-a0eb-f69f663dfb0dasync1 AsyncResult(id56db7832-d0f4-4b9b-ba92-4fb08d0f9592, appcel) #id处放置消息队列中任务的idif async1.successful(): #判断执行任务成功result async1.get()print(result)#result.forget() # 将结果删除elifasync1.failed():print(执行失败)elif async1.status PENDING:print(任务等待中被执行)elif async1.status RETRY:print(任务异常后正在重试)elif async1.status STARTED:print(任务已经开始被执行)6.添加任务启动工人查看结果1.运行worker.py2.终端中输入命令celery worker -A app_task -l info -P eventlet # 其中app_task为配置参数的文件名3.运行result.py查看结果多任务使用1.目录结构将简单使用中的app_task改为一个celery_task文件夹其中放至少两个文件celery.py(名字固定)/task1.py(方具体任务的文件)/根据需求放置其他任务文件-celery_task-celery.py # 配置参数-task1.py # 任务文件根据需求添加-task2.py...-worker.py # 添加任务-result.py # 查看结果2.在任务文件task1.py中导入cel并以装饰器形式加在函数上from .celery importcelcel.taskdefmul(x,y):return x*y3.celery.py中配置参数from celery importCelerycelCelery(celery_demo,backend redis://127.0.0.1:6379/1,broker redis://127.0.0.1:6379/2,include[celery_task.task1,celery_task.task2])cel.conf.timezone Asia/Shanghaicel.conf.enable_utc False4.worker.py和简单使用中的相同5.result.py与简单使用中的相同6.添加任务启动工人查看结果1.运行worker.py2.终端中输入命令celery worker -A celery_task -l info -P eventlet # 其中celery_task为文件夹名3.运行result.py查看结果延时任务1.目录结构-celery_task-celery.py-task1.py-task2.py...-worker.py-result.py2.task1.py与多任务相同3.celery.py与多任务相同4.worker.py中将传入的时间改为指定时间ctime datetime.now() #当前时间utc_time datetime.utcfromtimestamp(ctime.timestamp()) #转成本地时间time_delta timedelta(seconds30) #设置延时30stask_time utc_timetime_delta #设定时间点为30s后ret1 add.apply_async(args[2,3],etatask_time)5.result.py与简单使用中的相同6.与多任务相同定时任务1.目录结构去掉worker.py添加任务变为在终端输入命令-celery.py-celery.py-task1.py-task2.py...-result.py2.task1.py与多任务相同3.celery.py中与定时任务相比添加下面参数1.设定时间间隔循环执行cel.conf.beat_schedule {add-every-10-seconds:{ #名字随意起task: celery_task.task1.mul, #指定要执行的任务schedule: timedelta(seconds2), #指定时间间隔args: (2,3) #传入参数}}2.指定年月日具体时间循环执行from celery.schedules importcrontabcel.conf.beat_schedule{add-every-10-seconds:{task: celery_task.task1.mul,schedule: crontab(minute28,hour2,day_of_month23,month_of_year6),args: (6,3)}}4.没有worker.py5.result.py与简单使用中的相同6.添加任务启动工人查看结果1.启动一个终端输入celery beat -A celery_task -l info # celery_task为文件夹名2.再启动一个终端输入celery worker -A celery_task -l info -P eventlet3.运行result.py查看结果