如何在Django中使用Celery?

最近写了一个Django项目,碰巧有个数据获取的功能延迟特别大(30s左右),严重影响用户的浏览体验,就想到了去尝试用celery解决。怎么说呢?会者不难,难者不会。这东西最初感觉挺简单的,搞了两天各种error,就找了一个视频系统的学习了一下,emmm还是有error。我这里主要是想通过Model来存数据,各种class引用报错,如果还不能解决的话都想过直接操作MySQL来写库了。

https://www.emperinter.info/2022/06/15/how-to-use-celery-in-django/

使用

我这里主要先说一下一个文件的使用方式吧,当然也可以搞一个类把task和配置文件等等分开尽量解耦,后续维护更方便。消息中间件选用的是Redis,当然你也可以选用mq等等。

  • models.py 同目录创建celery_task.py,我这里主要是一个异步,定时任务的话也差不多。内容如下,主要注意的是django的引用以及models的引用。
from celery import Celery  
import time  
import os  
import django  

# 注意Project换成自己的项目名称
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Project.settings')  
django.setup()  
from test.models import article  
  
backend='redis://127.0.0.1:6379/1'  # 数据库存储异步结果  
broker='redis://127.0.0.1:6379/2'   # 消息中间件(0-16个,其中选一个)  
cel=Celery('test',backend=backend,broker=broker) # ’test‘ celery的一个名字  
  
@cel.task()  
def getcontent():  
	article.objects.create(description ="description", content = "content")
  • views.py
from .celery_task import getcontent
def IndexView(request):  
	# 用celery  
	getcontent.delay() 
	return render(request, 'test/index.html')
  • 在项目路径下启动,这里主要注意一下celery5.x的启动方式以及gevent的参数以及module安装。
#celery5.x 启动
#celery --app test.celery_task worker -l info -P gevent
celery worker -A test.celery_task -l info -P gevent

https://www.emperinter.info/2022/06/15/how-to-use-celery-in-django/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值