要求python
django
django-celery
celery
实现
setting.py:
import djcelery
djcelery.setup_loader()
BROKER_URL = 'django://'
...
INSTALLED_APPS = (
...
'djcelery',
'kombu.transport.django',
...
)
# 以下的事为了定时任务使用
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
'add-every-1-minutes': {
'task': 'core.tasks.crowd_engine',
'schedule': timedelta(minutes=1),
},
}
tasks.py
from celery import task @task()
def add(x, y):
return x + y
启动 先启动项目: python manage.py runserver(实践证明 不启动也是没有干系的 应为是单独的服务器嘛)
在启动worker :(异步任务使用)
export C_FORCE_ROOT="true"(先执行这步,在去启动worker)
python manage.py celery worker --loglevel=info
在启动定期任务:(定期任务是 定时给worker分配任务,所以说定期任务是要在启动异步任务的前提下才能使用)
python manage.py celery beat
总结:
celery 和Django的信号的区别
celery的异步的,信号是同步的