djcelery的细节篇

时间:2023-03-09 16:42:42
djcelery的细节篇

http://blog.****.net/samed/article/details/50598371

随时撸一撸,要点记心间。。

1. 下面讲解一下celery.py文件的配置内容,为何要这么配置。

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_celery.settings')

设置这个环境变量是为了让 celery 命令能找到 Django 项目。这条语句必须出现在 Celery 实例创建之前。

app = Celery('django_celery')

这个 app 就是 Celery 实例。可以有很多 Celery 实例,但是当使用 Django 时,似乎没有必要。

app.config_from_object('django.conf:settings')

可以将 settings 对象作为参数传入,但是更好的方式是使用字符串,因为当使用 Windows 系统或者 execv 时 celery worker 不需要序列化 settings 对象。

app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

为了重用 Django APP,通常是在单独的 tasks.py 模块中定义所有任务。Celery 会自动发现这些模块,加上这一句后,Celery 会自动发现 Django APP 中定义的任务,前提是遵循如下 tasks.py 约定:

- app1/
    - tasks.py
    - models.py
- app2/
    - tasks.py
    - models.py

2. 关于broker:

这个是个什么东西,我还是不太理解,按照seeting的配置来说,我理解就是承载的站点。

BROKER_URL = 'django://localhost:8000//'

这里要注意我是使用了django自带的broker来作为celery broker,传说可以选的broker有:

RabbitMQ
Redis
database

更多的内容可以参看参考文献2。