First, the process
Second, prepare for work
- celery4.4.0 document https://docs.celeryproject.org/en/stable/
Installation Module
pip install celery 4.4.0
New celery_tasks / celery.py in the root directory
celery.py file
from __future__ import absolute_import, unicode_literals import os from celery import Celery # 1. 设置环境变量 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings') # 2. 创建celery对象 app = Celery('proj') # 3. 加载配置文件 app.config_from_object('celery_tasks.config', namespace='CELERY') # 4. 加载任务模块 app.autodiscover_tasks() # 5. 任务 @app.task(bind=True,name='xx') def debug_task(self): print('Request: {0!r}'.format(self.request))
Profile config.py
# 存放结果 result_backend = 'redis://127.0.0.1:6379/15' # 存放任务 broker_url = 'redis://127.0.0.1:6379/14'
Third, start
Start command
celery -A celery_tasks.celery worker -l info
fuqiang:test009 fuqiang$ celery -A celery_tasks.celery worker -l info -------------- [email protected] v4.3.0 (rhubarb) ---- **** ----- --- * *** * -- Darwin-18.7.0-x86_64-i386-64bit 2020-02-17 13:19:28 -- * - **** --- - ** ---------- [config] - ** ---------- .> app: proj:0x104c09940 - ** ---------- .> transport: redis://127.0.0.1:6379/14 - ** ---------- .> results: redis://127.0.0.1:6379/15 - *** --- * --- .> concurrency: 8 (prefork) -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) --- ***** ----- -------------- [queues] .> celery exchange=celery(direct) key=celery [tasks] . xx [2020-02-17 13:19:28,432: INFO/MainProcess] Connected to redis://127.0.0.1:6379/14 [2020-02-17 13:19:28,442: INFO/MainProcess] mingle: searching for neighbors [2020-02-17 13:19:29,463: INFO/MainProcess] mingle: all alone [2020-02-17 13:19:29,481: INFO/MainProcess] [email protected] ready. [2020-02-17 13:20:03,732: INFO/MainProcess] Received task: xx[e53b1786-a8c3-4eed-83e5-95bf6693f88e] [2020-02-17 13:20:03,734: WARNING/ForkPoolWorker-8] ok
A terminal open test
Enter the interactive mode of django
python manager.py shell
fuqiang:test009 fuqiang$ python manage.py shell Python 3.6.8 (v3.6.8:3c6b436a57, Dec 24 2018, 02:04:31) Type 'copyright', 'credits' or 'license' for more information IPython 7.6.1 -- An enhanced Interactive Python. Type '?' for help. In [1]: from celery_tasks.celery import debug_task In [2]: debug_task.delay() Out[2]: <AsyncResult: e53b1786-a8c3-4eed-83e5-95bf6693f88e>
View tasks
127.0.0.1:6379[14]> keys * 1) "unacked_mutex" 2) "_kombu.binding.celeryev" 3) "_kombu.binding.celery.pidbox" 4) "_kombu.binding.celery" 127.0.0.1:6379[14]> get unacked_mutex "09c47a60-201c-40e3-9b66-eb458e7d1d7f"
View Results
127.0.0.1:6379[15]> keys * 1) "celery-task-meta-e53b1786-a8c3-4eed-83e5-95bf6693f88e" 2) "celery-task-meta-337bd385-29d5-4b99-9a62-ee445707dcc8" 3) "celery-task-meta-e796c575-b8c1-4f62-b83c-bfa2b13d51ad" 4) "celery-task-meta-52f9f207-a3e0-4338-8da6-7b86add24cf0" 127.0.0.1:6379[15]> get celery-task-meta-e53b1786-a8c3-4eed-83e5-95bf6693f88e "{\"status\": \"SUCCESS\", \"result\": null, \"traceback\": null, \"children\": [], \"task_id\": \"e53b1786-a8c3-4eed-83e5-95bf6693f88e\", \"date_done\": \"2020-02-17T13:20:03.735324\"}" 127.0.0.1:6379[15]>