Django 异步和定时任务相关配置

Django 异步和定时任务相关配置


异步任务(celery)

  • 需要redis支持, redis下载安装,使用如下命令运行,默认
.\redis-server.exe redis.windows.conf   (windows下)
  • 安装
celery                             3.1.26.post2
celery-with-redis                  3.0
  • settings.py配置
# redis异步配置
BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Shanghai'
  • 修改settings.py同层级目录下的_init_.py文件
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ['celery_app']
  • 新建celery.py文件,和settings.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_proj' program.
# 按照实际情况修改相关内容
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Data_forwarding.settings')
app = Celery('forwarding')
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))
  • 完整的项目结构
├─Data_forwarding
│  │  celery.py
│  │  settings.py
│  │  urls.py
│  │  wsgi.py
│  │  __init__.py 
│          
├─forwarding
│  │  admin.py
│  │  apps.py
│  │  models.py
│  │  tasks.py
│  │  tests.py
│  │  views.py
│  │  __init__.py
│          
├─static
│      __init__.py
│      
└─templates
from celery import task

@task
def your_task():
"""
你的任务流程
"""
  • 而后在view里直接使用
your_task.delay()
  • 启动worker(确保redis已经启动)
# celery -A 你的项目名称(不是APP名) worker -l info
celery -A Data_forwarding worker -l info
  • 有如下输出则表示成功,开始愉快的DEBUG吧!
E:\PycharmProjects\Data_forwarding>celery -A Data_forwarding worker -l info

 -------------- celery@ihona-PC v3.1.26.post2 (Cipater)
---- **** -----
--- * ***  * -- Windows-10-10.0.17134-SP0
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         forwarding:0x2d8cff9f4a8
- ** ---------- .> transport:   redis://localhost:6379//
- ** ---------- .> results:     redis://localhost:6379/
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ----
--- ***** ----- [queues]
 -------------- .> celery           exchange=celery(direct) key=celery


[tasks]
  . Data_forwarding.celery.debug_task
  . forwarding.tasks.save_xml

定时任务(apscheduler.scheduler)

  • 安装APScheduler
pip install APScheduler==2.1.2
  • 在url中添加如下代码
from apscheduler.scheduler import Scheduler
from forwarding import views
# 定时任务
sched = Scheduler()
# 设置任务间隔时间
@sched.interval_schedule(seconds=10)
def send():
    # views.你的函数
    views.send_status0()

sched.start()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值