这边主要是纪录一下目前学习 Celery 的一些纪录,想要知道完整的 Celery 的介绍可以自行 Google ~
过程中如果有错误,欢迎留言讨论!!
pip install celery
pip install redis
pip install gevent
pip install sqlalchemy
注: 由於在 windows 作业系统中不支援 Celery 的运作,需要另外安装套件才行
注: Celery 本身的 backend 为 ORM 架构,因此需要安装 sqlalchemy
celery -A <module_name> worker -l info -P gevent
注: 如果不是 windows 系统则不需要加上 -P gevent
from celery import Celery
app = Celery(<module_name>, broker="<broker_url>", backend="<backend_url>")
@app.task
def hello_world(name: str):
if name is not None:
return f"hello {name}"
else:
return "hello world"
在 Celery 中调用任务的方法大致上有三种,分别是:
这个方式为直接呼叫任务名称,但要注意此方法并不会将任务加入 worker 当中,
基本上就和普通的函数呼叫一样
>>> from celery_start import hello_world
>>> print(hello_world())
使用这个方式,会将任务加入 celery worker 中,此方法可以理解为 apply_async
的简易方式,缺点为无法设定其他复杂的参数
>>> from celery_start import hello_world
>>> hello_world.delay("nick")
注: 笔者本地端开启 celery server 的语法为 celery -A celery_start worker -l info -P gevent
这个方法为同样可以将任务加入列队中,但相较於 delay 可以多设定很多参数,
例如: 等待时间、甚麽时候要被执行...... 等等,下面的示范为,设定几秒钟後执行,
关於定时执行的部分,会於另一篇文章详细说明
>>> from celery_start import hello_world
>>> hello_world.apply_async(("nick",), countdown=20)
可以看到透过设定 countdown 为 20 後,celery 会在收到任务後的 20 秒才开始执行
指定的任务
透过 celery 我们可以很轻松的实现任务的列队以及管理,在 celery 中还有许多设定
可以让任务更加有效率地进行,下一篇将会介绍 countdown、eta 等让 celery 可以定时
执行的方法
<<: Laravel 技术笔记 (四)【Query Builder 查询建构器】
本篇重点 本篇目标是要下载kbar资料及建立自已的K线资料库 抓取所有股票Contract 抓取所有...
今天跟大神 重新认识 Vue.js | Kuro Hsu 跨越层级的传递方式 学习祖先元件怎麽传递家...
上一篇我们做完了导览列,今天我们就要建立导览列下面会有的一张大图片,以及搜寻框,一步一步完成我们的网...
环境安装 在运行java程序之前我们需要先安装Java SE Development Kit,我们选...
最近几期会来谈谈AR硬体设备的一部分。要能够用肉眼看到这些虚拟的东西,当然得结合显示器、处理器、感测...