文本尝试研究,使用 redis 作为 celery 的 broker 时,celery 的交互操作同 redis 中数据记录的关联关系。
不在乎过程的,可以直接看最后的结论。
测试代码:
> # a.py
from celery import Celery
celery_app = Celery('a', broker='redis://localhost:6379/0')
@celery_app.task
def test_task(n):
open('test.txt', 'a').write(n + '\n')
print n
if __name__ == '__main__':
test_task.delay('==== ttttt1 =====')
先将 redis 部署于本机的 6379 默认端口 不要设置密码,使用 celery 版本 3.1.23
[1]
先直接发起一个 task
$python a.py
执行后可看到 redis 上生成了两个 key
_kombu.binding.celery:这个不用管(我推测是 celery 服务的某个 id 标记)
celery:表示当前正在队列中的 task,等待被 worker 所接收
然后启动一个 worker
$celery worker -A a --loglevel=debug
执行后可看到 celery 这个 key 消失了,同时新增了 2 个 key
celery