多个不同配置、组件、task的celery可以共存于同一个进程中
每一个worker 保存一个 task名---task实际代码 的映射,称之为:任务注册表(task registry),即:app.tasks
每创建一个task,就会将这个映射添加到 任务注册表
如果celery找不到某个task属于哪个模块,如果在task程序代码的源文件中,那么就是 "main.fun",
如果该task被引入到其他模块,那么该task名字就是 "module_name.fun"
自定义celery名字 app = Celery("haha")
可以通过app.mian 查看 celery实例的名字,包括在函数的源文件中,其名字显示为:haha.fun
a.py
from celery import Celery
app = Celery()
@app.task
def add(x, y):
return x + y
if __name__ == "__main__":
print(__name__) # __main__
print(app.main) # None
print(add) #<@task: __main__.add of __main__ at 0x7f1a9dfda7b8>
print(add.__name__) # add
print(app.tasks) # { '__main__.add': <@task: __main__.add of __main__ at 0x7f1a9dfda7b8>, ...}
print(app.tasks['__main__.add']) #@task: __main__.add of __main__ at 0x7f1a9dfda7b8>
b.py
from a import add,app
print(add.__name__) # add
print(app.tasks) # { 'a.add': <@task: a.add of __main__ at 0x7fde0ad18128>, ....}
```python
a.py
from celery import Celery
app = Celery("haha")
@app.task
def add(x, y):
return x + y
if __name__ == '__main__':
print(__name__) # __main__
print(app.main) # haha
print(add) # <@task: haha.add of haha at 0x7fe9552dd898>
print(add.__name__) # add
print(app.tasks) # { 'haha.add': <@task: haha.add of haha at 0x7fe9552dd898>,....}
print(app.tasks['haha.add']) # <@task: haha.add of haha at 0x7fe9552dd898>,
b.py
from a import add,app
print(add.__name__) # add
print(app.tasks) # {'a.add': <@task: a.add of haha at 0x7f633070add8>,...}