参考 https://blog.youkuaiyun.com/michael_lbs/article/details/74923367
1.安装 pyramid_celery-3.0.0 https://pypi.python.org/pypi/pyramid_celery/
pip install pyramid_celery
2.安装 django-celery-3.2.2 https://pypi.python.org/pypi/django-celery/
pip install django-celery
Django中设置
INSTALLED_APPS = ['djcelery',]
python manage.py migrate
3.安装celery-with-redis-3.0 https://pypi.python.org/pypi/celery-with-redis/
pip install celery-with-redis
4.安装django-celery-beat-1.1.0 https://pypi.python.org/pypi/django-celery-beat/
pip install django_celery_beat
5.下载 Redis-x64-3.2.100.zip文件 https://github.com/MicrosoftArchive/redis/releases
- Redis服务启动
一、
import djcelery
djcelery.setup_loader() # 加载djcelery
# 数据库调度
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
BROKER_URL = 'redis://127.0.0.1:6379/0'
BROKER_TRANSPORT = 'redis'
二、
Apitest目录下新建celery.py 文件
from __future__ import absolute_import
import os, django
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'autotest.settings')
django.setup()
app = Celery('autotest')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
三、
Apitest目录下新建task.py文件
# -*- coding: utf-8 -*-
import requests, time, sys, re
import urllib, zlib#,
import pymysql
import unittest
from trace import CoverageResults
import json
from idlelib.rpc import response_queue
from apitest.celery import app
from time import sleep
@app.task
def hello_world():
print('已运行')
四、
- 启动服务 python manage.py runserver
- 切换到Redis文件夹下 cmd 启动指令 redis-server redis.windows.conf
- 启动指令 python manage.py celery worker -l info
- 启动指令 python manage.py celery beat
启动指令 python manage.py celery worker -l info报错
TypeError: can only concatenate tuple (not "NoneType") to tuple
解决办法:
D:\Python36\Lib\site-packages\djcelery\management\commands\celery.py
文件的14--16行代码注释掉
class Command(CeleryCommand):
"""The celery command."""
help = 'celery commands, see celery help'
# options = (CeleryCommand.options +
# base.get_options() +
# base.preload_options)
class Command(CeleryCommand):
"""The celery command."""
help = 'celery commands, see celery help'
# options = (CeleryCommand.options +
# base.get_options() +
# base.preload_options)
pip install pyramid_celery