Celery | 处理大量消息的分布式系统

Celery

1 定义

Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统

它是一个专注于实时处理的任务队列,同时也支持任务调度

中文官网:http://docs.jinkan.org/docs/celery/

在线安装 sudo pip3 install celery

离线安装

tar xvfz celery-0.0.0.tar.gz
cd celery-0.0.0
python3 setup.py build
python3 setup.py install

2,使用场景

1,任务调度

2,避开阻塞操作

名词解释:

broker - 消息传输的中间件,生产者一旦有消息发送,将发至broker;【RQ,redis】

backend - 用于存储消息/任务结果,如果需要跟踪和查询任务状态,则需添加要配置相关

worker - 工作者 - 消费/执行broker中消息/任务的进程

在这里插入图片描述

2 使用celery

​ 1, 创建celery应用

#创建 tasks.py 文件

from celery import Celery
#初始化celery, 指定broker
app = Celery('guoxiaonao', broker='redis://:password@127.0.0.1/1')

# 创建任务函数
@app.task
def task_test():
    print("task is running....")
    
#在该tasks.py同级目录下 执行 celery -A tasks worker --loglevel=info

​ 2,推送任务

​ 在tasks.py文件的同级目录进入 python3 执行 如下代码

from tasks import task_test
task_test.delay()

​ 3,存储执行结果

​ Celery提供存储任务执行结果的方案,需借助 redis 或 mysql 或Memcached 等

​ 详情可见 http://docs.celeryproject.org/en/latest/reference/celery.result.html#module-celery.result

from celery import Celery


app = Celery('demo',
             broker='redis://@127.0.0.1:6379/1'
             backend='redis://@127.0.0.1:6379/2',
             )

# 创建任务函数
@app.task
def task_test(a, b):
    print("task is running")
    return a + b

3 Django + Celery

1,创建项目+应用

#常规命令
django-admin startproject chongci
python manage.py startapp user

2,创建celery.py

在settings.py同级目录下 创建 celery.py文件

文件内容如下:

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

# 为celery设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chongci.settings')

# 创建应用
app = Celery("chongci")
# 配置应用
app.conf.update(
    # 配置broker
    BROKER_URL='redis://:password@127.0.0.1:6379/1',
)
# 设置app自动加载任务
app.autodiscover_tasks(settings.INSTALLED_APPS)

3, 在应用模块【user目录下】创建tasks.py文件

文件内容如下:

from chongci.celery import app
import time

@app.task
def task_test():
    print("task begin....")
    time.sleep(10)
    print("task over....")

4, 应用视图编写;内容如下:

from django.http import HttpResponse
from .tasks import task_test
import datetime

def test_celery(request):
    task_test.delay()
	now = datetime.datetime.now()
    html = "return at %s"%(now.strftime('%H:%M:%S'))
    return HttpResponse(html)

5, 分布式路由下添加 test_celery函数对应路由,此过程略

6, 启动django python3 manage.py runserver

7, 创建 celery worker

​ 在项目路径下,即chongci 下 执行如下

celery -A chongci worker -l info

st_celery函数对应路由,此过程略

8,上线时 执行celery命令

nohup celery -A mywiki worker -1 info > c.log 2>&1 &
智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识点解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“橙点同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值