怎么在Django中使用芹菜实现异步任务

  介绍

这期内容当中小编将会给大家带来有关怎么在Django中使用芹菜实现异步任务,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>芹菜

许多Django应用需要执行异步任务,以便不耽误http请求的执行。我们也可以选择许多方法来完成异步任务,使用芹菜是一个比较好的选择,因为芹菜有着大量的社区支持,能够完美的扩展,和Django结合的也很好。芹菜不仅能在Django中使用,还能在其他地方被大量的使用。因此一旦学会使用芹菜,我们可以很方便的在其他项目中使用它。

芹菜是一个用于实现异步任务的库,在很多项目中都使用它,它和django融合使用很完美。使用芹菜可以在实现http请求请求返回视图前做一些我们想做的而且耗时的事情而不会让用户等待太久

<强>环境

django版本==1.11.6

芹菜版本==3.1.25

<强>安装

pip  install  django-celery   pip  install 芹菜

首先需要将芹菜添加到django项目里的设置,芹菜任务和django需要一个中间人(代理),这里使用的是django自带的经纪人,但在生产中一般使用rabbitmq、复述等,在INSTALLED_APP中需要添加djcelery和kombu.transport。django,还有应用程序应用。

<强>——项目/项目/设置。py:

import  djcelery      djcelery.setup_loader (),   时间=BROKER_URL  & # 39; django://& # 39;      INSTALLED_APP =, (   ,……   ,& # 39;应用# 39;   ,& # 39;djcelery& # 39;   ,& # 39;kombu.transport.django& # 39;   )

新建芹菜。py创建一个芹菜应用,并添加以下内容

<强>——项目/项目/芹菜。py:

#,相对路径导入,,防止导入,celery 时冲突   得到__future__  import  absolute_import   import 操作系统   得到celery  import 芹菜   得到django.conf  import 设置      #,让,celery 能找到,django 项目   os.environ.setdefault (& # 39; DJANGO_SETTINGS_MODULE& # 39;,, & # 39; project.settings& # 39;)   #,创建一个,celery 应用   app =,芹菜(& # 39;项目# 39;)      #,导入配置   app.config_from_object (& # 39; django.conf:设置# 39;)   #,自动发现,任务   app.autodiscover_tasks(λ:settings.INSTALLED_APPS)      @app.task(绑定=True)   def  debug_task(自我):      ,打印(& # 39;要求:,{0 ! r} & # 39; .format (self.request))

<强> -项目/项目/__init__。py:

得到__future__  import  absolute_import      #,却;能够will  make  sure 从而app  is  always  imported 当   #,Django  starts  so  that  shared_task  will  use 却;能够应用。   得到.celery  import  app  as  celery_app

在django应用程序中添加任务,文件名必须是任务。py,在普通python函数前加一个@task()装饰器就变成了芹菜任务

<强>项目/app/任务。py:

得到celery.task  import 任务   得到time  import 睡眠      @task ()   def  helloWorld ():   ,print  & # 39; helloworld # 39;   ,睡眠(10)   ,print  & # 39; helloworld # 39;   ,return  & # 39; helloCelery& # 39;

这样,一个任务就创建成功了,只剩下在视图中调用了

<强>项目/应用程序视图。py:

得到tasks.py  import  helloWorld      def 家居():      ,helloWorld.delay ()      ,return  HttpResponse (& # 39; helloCelery& # 39;)

最后

python  manage.py 迁移

上述就是小编为大家分享的怎么在Django中使用芹菜实现异步任务了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

怎么在Django中使用芹菜实现异步任务