django+celery部署

需求:使用django框架实现定时任务功能,在网上找资料后,最后决定使用celery,功能确实强大。

1、相关依赖安装包

django-1.11.17
celery-3.1.25
django-celery-3.2.1
Erlang(otp_win64_21.2.exe)
rabbitmq-server-3.7.11.exe

注:安装的是windows环境

2、安装 django celery

不再赘述,使用python方式安装即可:
pip install django

python setup.py install

3、安装Erlang

双击 otp_win64_21.2.exe 安装,配置个环境变量吧:

ERLANG_HOME
在这里插入图片描述
4、安装rabbitmq

双击 rabbitmq-server-3.7.11.exe 安装即可,默认安装后的监听端口:5672

激活 RabbitMQ’s Management Plugin:

D:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.11\sbin>
rabbitmq-plugins.bat enable rabbitmq_management

然后重启一下服务(以管理员方式启动cmd):

net stop RabbitMQ && net start RabbitMQ

默认安装后,会存在个管理员: guest / guest

这里就不探讨rabbitmq的详细使用,使用guest管理员进行连接。

使用浏览器打开: http://localhost:15672/ ,使用guest用户登录成功即可。
在这里插入图片描述
5、django + celery 配置

在django项目的 settings.py 中配置:

# settings.py
# 在这里加上 djcelery,这样django自带的后管就可以管理celery
INSTALLED_APPS = [
'djcelery'
]

# 加上这段代码
import djcelery
djcelery.setup_loader()
BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERY_ENABLE_UTC = False
CELERYD_CONCURRENCY = 10
CELERYD_MAX_TASKS_PER_CHILD = 1

在django项目settings.py同目录下新建下 celery.py,这样就可以自动发现配置的定时任务:

from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ocean.settings')
app = Celery('ocean')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

在这里插入图片描述

# 在django项目目录下执行,新建celery相关的数据库表
python manage.py makemigrations
python manage.py migrate

结果:
在这里插入图片描述
这样就可以在后台配置定时任务了:
在这里插入图片描述
6、简单使用

在这里插入图片描述
新建个测试的定时任务(相当于模板):
tasks.py

# 测试任务
@shared_task()
def excute_sql(x,y):
    print "%d * %d = %d" % (x, y, x * y)
    return x * y

在后台配置具体的参数:
在这里插入图片描述

启动celery:

# 启动 Celery Beat 进程,定时将任务发送到 Broker,在项目根目录下执行下面命令:
celery beat -A ocean

#启动 Celery Worker 进程,在项目的根目录下执行下面命令:
celery -A ocean worker --loglevel=info 

会看到这些输出,结果就为 9*5 =45
在这里插入图片描述
在这里插入图片描述

参考:
https://www.cnblogs.com/huangxiaoxue/p/7266253.html
https://www.cnblogs.com/ericli-ericli/p/5902270.html
http://blog.51cto.com/shineforever/1737323

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值