Python + celery实现分布式任务

本地项目:django_v1

在这里插入图片描述

step1.xshell进行远程安装python中的celery包

在这里插入图片描述

step2.xshell中远程建好将要上传本地文件要到的文件夹

在这里插入图片描述
更正:上面这个图不是上传django_v1本地文件哈,只是远程新建django_v1文件夹

step3.PyCharm中连接测试和上传远程云服务器

PyCharm中,tools–>Deployment–>Configuration

Connection
连接远程的python解释器 解决本地无法安装环境依赖问题

先修改协议,连接远程,改完红框相关信息后,
点击"Test SFTP connection"进行测试连接,,,等到Successfully…
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Mappings
里面设置"Deployment path on server"----->要远程上传到的工程文件夹的路径(xshell里提前建好文件夹哦~ mkdir django_v1)

注:进入下面界面之前,如果没有django_v1工程,则点击左上角的绿色加号,进行添加

在这里插入图片描述

step4.PyCharm中显示远程Python已有的一些包

在这里插入图片描述
在这里插入图片描述
改好了:

在这里插入图片描述
在这里插入图片描述

step5.PyCharm中设置云服务器端口

Run—>Edit Configurations—>Django Server

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

step5.PyCharm中开始上传

自动加载
在这里插入图片描述
在这里插入图片描述

step6.xshell远程查看,上传成功

在这里插入图片描述


celery部分的操作:

在这里插入图片描述

在这里插入图片描述

在下图所示,celery运行中,就可以开始访问服务器,发送邮件啦~
(celery启动中,服务器访问才有效)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


代码部分:

步骤一:在项目settings.py所在目录建立一个celery.py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# 这是wsgi.py中的数据copy下,配置
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你项目的名字.settings')
app = Celery('你项目的名字')
app.config_from_object('django.conf:settings', namespace='CELERY')

#Load task modules from all registered Django app configs.
app.autodiscover_tasks() 

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

在这里插入图片描述

步骤二:Settings.py设置celery环境变量

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  #email后端
EMAIL_USE_TLS = False    # 是否使用TLS安全传输协议
EMAIL_USE_SSL = True     # 是否使用SSL加密,QQ企业邮箱要求使用
EMAIL_HOST = 'smtp.qq.com'   # 发送邮件的邮箱的SMTP服务器,这里用了qq企业邮箱
EMAIL_PORT = 465           # 发件箱的SMTP服务器端口
EMAIL_HOST_USER = '1453472003@qq.com'  # 发送邮件的邮箱地址
EMAIL_HOST_PASSWORD = 'zhspngccrdspjabi'
DEFAULT_FROM_EMAIL = 'system <1453472003@qq.com>'

CELERY_BROKER_URL = 'redis://localhost:6379/2'
#:Only add pickle to this list if your broker is secured
#:from unwanted access (see userguide/security.html)
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_BACKEND = 'redis://localhost:6379/3'
CELERY_TASK_SERIALIZER = 'json'

在这里插入图片描述

步骤三:settings.py同级目录创建tasks.py代码:

from __future__ import absolute_import, unicode_literals
from celery import shared_task
from 你项目的名字 import settings
from django.core.mail import send_mail

@shared_task
def send_register_email(email):
    message = ''
    title = '甲骨文的信息'
    body = '<h1>for,欢迎成为甲骨文IT的精英</h1>'
    try:
       send_mail(title, message, settings.EMAIL_HOST_USER, [email], html_message=body)
    except Exception as e:
        print(e)

在这里插入图片描述

步骤四:在settings.py同级目录创建views.py写入:

from django.http import HttpResponse
from .tasks import send_register_email
def first_celery(request):
   email=request.GET.get("email")
     #任务函数的异步调用
   send_register_email.delay(email)
   return HttpResponse("OK")

在这里插入图片描述

步骤五: 填写url

from django.conf.urls import url
from django.contrib import admin
from django.urls import path
from .views import first_celery

urlpatterns = [
path('admin/', admin.site.urls), 
path('email/', first_celery),
]

在这里插入图片描述

步骤六:

celery -A django_v1 worker -l info 

进入你项目manage.py 同级目录执行语句
----->见上文,celery操作部分

步骤七、启动django项目


附录,傻瓜式:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值