亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

運維工單--消息隊列發送郵件

發布時間:2020-06-19 18:38:04 來源:網絡 閱讀:3610 作者:shouhus 欄目:開發技術

      在寫運維工單的消息推送時,直接使用郵件發送會導致系統反應特別慢,所以研究了一下rabbitmq+celery來實現郵件發送的異步執行

      部署rabbitmq

      RabbitMQ是基于Erlang的,所以首先必須配置Erlang環境。

      從Erlang的官網 http://www.erlang.org/download.html 下載最新的erlang安裝包,我下載的版本是 otp_src_R15B01.tar.gz。

tar xvzf otp_src_R15B01.tar.gz
cd otp_src_R14B03
./configure
make
make install

安裝完Erlang,開始安裝RabbitMQ-Server。


主要參考官方文檔:http://www.rabbitmq.com/build-server.html

需要安裝一個比較新的Python版本。安裝略。

'''

這一步我沒有做,安裝也沒收到影響,在此僅是記載

需要安裝simplejson。從此處下載最新的版本: http://pypi.python.org/pypi/simplejson#downloads 。我下載的版本是 simplejson-2.2.1.tar.gz

$ tar xvzf simplejson-2.2.1.tar.gz
$ cd simplejson-2.2.1
$ sudo python setup.py install

''''

然后安裝RabbitMQ Server。從此處下載源代碼版本的RabbitMQ: http://www.rabbitmq.com/server.html。我下載的版本是 rabbitmq_server-3.5.4.tar.gz

$ tar xvzf rabbitmq_server-3.5.4.tar.gz
$ cd rabbitmq_server-3.5.4
$ make
# TARGET_DIR=/usr/local SBIN_DIR=/usr/local/sbin MAN_DIR=/usr/local/man make install

在sbin/目錄下出現了三個命令:

rabbitmqctl  rabbitmq-env  rabbitmq-server


安裝成功。


運行

找到sbin/目錄,運行程序:

/usr/local/sbin/rabbitmq-server –detached

停止程序:

/usr/local/sbin/rabbitmqctl stop

在settings.py中加入rabbitmq配置:

BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "/"


'''以下為參考資料'''

配置

主要參考官方文檔:http://www.rabbitmq.com/configure.html


一般情況下,RabbitMQ的默認配置就足夠了。如果希望特殊設置的話,有兩個途徑:

一個是環境變量的配置文件 rabbitmq-env.conf ;

一個是配置信息的配置文件 rabbitmq.config;

注意,這兩個文件默認是沒有的,如果需要必須自己創建。


rabbitmq-env.conf

這個文件的位置是確定和不能改變的,位于:/etc/rabbitmq目錄下(這個目錄需要自己創建)。

文件的內容包括了RabbitMQ的一些環境變量,常用的有:

#RABBITMQ_NODE_PORT=    //端口號

#HOSTNAME=

RABBITMQ_NODENAME=mq

RABBITMQ_CONFIG_FILE=        //配置文件的路徑

RABBITMQ_MNESIA_BASE=/rabbitmq/data        //需要使用的MNESIA數據庫的路徑

RABBITMQ_LOG_BASE=/rabbitmq/log        //log的路徑

RABBITMQ_PLUGINS_DIR=/rabbitmq/plugins    //插件的路徑


具體的列表見:http://www.rabbitmq.com/configure.html#define-environment-variables

rabbitmq.config

這是一個標準的erlang配置文件。它必須符合erlang配置文件的標準。

它既有默認的目錄,也可以在rabbitmq-env.conf文件中配置。

文件的內容詳見:http://www.rabbitmq.com/configure.html#config-items

    部署celery

    直接執行

    pip install django-celery

在settings.py中加入以下配置   

 import djcelery
    djcelery.setup_loader()
    ...
    INSTALLED_APPS = (
       ...
       'djcelery',
       ...
    )

    最后創建Celery所需的數據表, 如果使用South作為數據遷移工具, 則運行:

    python manage.py migrate

    否則運行: (Django 1.6或Django 1.7都可以)

    python manage.py syncdb

    到此django+rabbitmq+celery的環境就部署完了,下面是郵件發送的代碼,這里是用的django自帶的郵件發送功能

    在settings.py中加入郵件發送配置:

EMAIL_HOST='outlook.office365.com'
EMAIL_HOST_USER='**@**.com'
EMAIL_HOST_PASSWORD='***'
EMAIL_USE_TLS = True

    創建一個新py文件,命名為tasks.py

    

from celery.task import Task
from celery import task
from workflow import models
from django.core.mail import EmailMessage
from django.template import loader
from worksystem.settings import EMAIL_HOST_USER
@task() 
def send_email(subject, content, to_name_list):
    html_content = loader.render_to_string(
                        'sendmail.html',               #需要渲染的html模板
                        {
                         'content':content
                            
                        }
                   )
    msg = EmailMessage(subject, html_content, EMAIL_HOST_USER, to_name_list)
    msg.content_subtype = "html" # Main content is now text/html
    msg.send()

    sendmail.html模版:  

<!DOCTYPE html>
<html lang="en">
<h>您好,您有新工單消息提醒,詳情請點擊 http://**.**.com/</h>
<table class="cellspacing="1px" ">
                <thead>
                    <tr>
                        <th >列名</th>
                        <th >相應值</th>
                    </tr>
                </thead>
                <tbody>
                {% for item in content %}
                <tr>
                <th >主鍵ID</th>
                <th >{{ item.id }}</th>
                </tr>
                <tr>
                <th >工單名稱</th>
                <th >{{ item.title }}</th>
                </tr>
                <tr>
                <th >申請人</th>
                <th >{{ item.creator }}</th>
                </tr>             
                <tr>
                <th >工單類型</th>
                <th >{{ item.type }}</th>
                </tr>
                <tr>
                <th >創建時間</th>
                <th >{{ item.create_time|date:"Y-m-d H:i:s" }}</th>
                </tr>
                <tr>
                <th >審批人</th>
                <th >{{ item.approveuser }}</th>
                </tr>
                <tr>
                <th >描述</th>
                <th >{{ item.description }}</th>
                </tr>
                <tr>
                <th >處理人</th>
                <th >{{ item.deal_user }}</th>
                </tr>                  
                <tr>
                <th >運帷回復</th>
                <th >{{ item.opsreply }}</th>
                </tr> 
                <tr>
                <th >狀態</th>
                <th >{{ item.state }}</th>
                </tr>
                {% endfor %}
      </tbody>
             </table>
</html>


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福贡县| 英吉沙县| 巴彦淖尔市| 万州区| 环江| 澳门| 辰溪县| 水城县| 保靖县| 射阳县| 延边| 汕尾市| 金坛市| 尼玛县| 宣城市| 察雅县| 凤台县| 波密县| 凉城县| 简阳市| 诏安县| 开平市| 连平县| 巴南区| 琼海市| 大邑县| 江津市| 宁德市| 九台市| 津南区| 中宁县| 海南省| 南平市| 台南市| 株洲市| 高唐县| 青田县| 奇台县| 霍林郭勒市| 井陉县| 兴山县|