運送屋さんがメールを送ります.
運送業者票のメッセージを書いて送る時、直接メールを使って送るとシステムの反応がとても遅くなりますので、rabitmq+celleryを調べて、メール送信の非同期実行を実現しました.
配置ラビットmq
RabbiitMQはErrlangに基づいているので、まずErrlang環境を配置しなければならない.
エリンランドの公式サイトからhttp://www.erlang.org/download.html 最新のerlangインストールパッケージをダウンロードして、私がダウンロードしたバージョンはotp_です.srcusR 15 B 01.tar.gz
主に公式文書を参照します.http://www.rabbitmq.com/build-server.html
比較的新しいPythonバージョンをインストールする必要があります.取り付け略
''
このステップはしていません.インストールにも影響がありません.ここでは記載だけです.
simplejsonをインストールしたいです.ここから最新バージョンをダウンロードします.http://pypi.python.org/pypi/simplejson#downloads .私がダウンロードしたバージョンはシンプルJ-2.2.tar.gzです.
そしてラビットMQ Serverをインストールします.ここからソースコードバージョンのRabbiitMQをダウンロードします.http://www.rabbitmq.com/server.html.私がダウンロードしたバージョンはラビットmqです.server-35.54.tar.gz
rabbitmqctl rabsimq-env ラヴィットmq-server
インストールに成功しました
実行
sbin/ディレクトリが見つかりました.プログラムを実行します.
設定
主に公式文書を参照します.http://www.rabbitmq.com/configure.html
一般的には、RabbiitMQのデフォルト構成は十分です.特別な設定を望むなら、二つのルートがあります.
一つは環境変数のプロファイルrabbitmq-env.co nfです.
一つは構成情報のプロファイルrabbitmq.co.figである.
この二つのファイルはデフォルトではありません.必要なら自分で作成してください.
rabbilimq-env.com
このファイルの位置は確定と変更できません.ディレクトリの下にあります.
ファイルの内容には、ラビットMQの環境変数が含まれています.
ヽoo.ツ.ツ.....................................................NODE_PORT= //ポート番号
ヽoo.ツ.....................................................
RABBITMQ_NODENAME=mq
RABBITMQ_CONFIG_FILE= //設定ファイルのパス
RABBITMQ_MNESIA_BASE=/rabsimq/data //使用するMNESIAデータベースのパス
RABBITMQ_LOG_BASE=/rabsimq/log //ロゴのパス
RABBITMQ_PLUGINS_DIR=/rabritymq/plugins //プラグインのパス
具体的なリストをご覧ください.http://www.rabbitmq.com/configure.html#define-environment-variables
rabsimq.co.fig
これは標準的なerlangプロファイルです.これはerlangプロファイルの基準に適合していなければなりません.
デフォルトのディレクトリもあれば、rabitmq-env.comファイルに配置することもできます.
ファイルの内容は以下の通りです.http://www.rabbitmq.com/configure.html#config-items
配置エクセル
直接実行
settings.pyにメール送信設定を追加します.
{% for アイテム in content %}
{% endfor %}
列名の対応する値のプライマリキーID{ item.id }}工単名称{ item.title }}申請者{ item.creator }}シートタイプ{ item.type }}作成時間{ item.create𞓜date:「Y-m-d」 H:i:s" }}承認者{ item.approveuser }}説明{ item.description }}処理人{{ item.dealuuser }}運帷回答{{ item.ops reply }}状態{ item.state }}
配置ラビットmq
RabbiitMQはErrlangに基づいているので、まずErrlang環境を配置しなければならない.
エリンランドの公式サイトからhttp://www.erlang.org/download.html 最新のerlangインストールパッケージをダウンロードして、私がダウンロードしたバージョンはotp_です.srcusR 15 B 01.tar.gz
tar xvzf otp_src_R15B01.tar.gz
cd otp_src_R14B03
./configure
make
make install
Errlangをインストールして、ラビットMQ-Severのインストールを開始します.主に公式文書を参照します.http://www.rabbitmq.com/build-server.html
比較的新しいPythonバージョンをインストールする必要があります.取り付け略
''
このステップはしていません.インストールにも影響がありません.ここでは記載だけです.
simplejsonをインストールしたいです.ここから最新バージョンをダウンロードします.http://pypi.python.org/pypi/simplejson#downloads .私がダウンロードしたバージョンはシンプルJ-2.2.tar.gzです.
$ tar xvzf simplejson-2.2.1.tar.gz
$ cd simplejson-2.2.1
$ sudo python setup.py install
''そしてラビットMQ Serverをインストールします.ここからソースコードバージョンのRabbiitMQをダウンロードします.http://www.rabbitmq.com/server.html.私がダウンロードしたバージョンはラビットmqです.server-35.54.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 rabsimq-env ラヴィットmq-server
インストールに成功しました
実行
sbin/ディレクトリが見つかりました.プログラムを実行します.
/usr/local/sbin/rabbitmq-server –detached
停止プログラム:/usr/local/sbin/rabbitmqctl stop
settings.pyにrabitmqプロファイルを追加する:BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "/"
'''以下は参考資料''です.設定
主に公式文書を参照します.http://www.rabbitmq.com/configure.html
一般的には、RabbiitMQのデフォルト構成は十分です.特別な設定を望むなら、二つのルートがあります.
一つは環境変数のプロファイルrabbitmq-env.co nfです.
一つは構成情報のプロファイルrabbitmq.co.figである.
この二つのファイルはデフォルトではありません.必要なら自分で作成してください.
rabbilimq-env.com
このファイルの位置は確定と変更できません.ディレクトリの下にあります.
ファイルの内容には、ラビットMQの環境変数が含まれています.
ヽoo.ツ.ツ.....................................................NODE_PORT= //ポート番号
ヽoo.ツ.....................................................
RABBITMQ_NODENAME=mq
RABBITMQ_CONFIG_FILE= //設定ファイルのパス
RABBITMQ_MNESIA_BASE=/rabsimq/data //使用するMNESIAデータベースのパス
RABBITMQ_LOG_BASE=/rabsimq/log //ロゴのパス
RABBITMQ_PLUGINS_DIR=/rabritymq/plugins //プラグインのパス
具体的なリストをご覧ください.http://www.rabbitmq.com/configure.html#define-environment-variables
rabsimq.co.fig
これは標準的なerlangプロファイルです.これはerlangプロファイルの基準に適合していなければなりません.
デフォルトのディレクトリもあれば、rabitmq-env.comファイルに配置することもできます.
ファイルの内容は以下の通りです.http://www.rabbitmq.com/configure.html#config-items
配置エクセル
直接実行
pip install django-celery
settings.pyに以下の構成を追加します. import djcelery
djcelery.setup_loader()
...
INSTALLED_APPS = (
...
'djcelery',
...
)
最後にCleryを作成するために必要なデータテーブルが、Southをデータ移動ツールとして使用すると、実行されます. python manage.py migrate
さもなくば運行します:(Django 1.6あるいはDjango 1.7はすべてできます) python manage.py syncdb
これでdjango+rabitmq+celleryの環境が整いました.以下はメールで送るコードです.ここはdjangoの持参したメール送信機能です.settings.pyにメール送信設定を追加します.
EMAIL_HOST='outlook.office365.com'
EMAIL_HOST_USER='**@**.com'
EMAIL_HOST_PASSWORD='***'
EMAIL_USE_TLS = True
新しいpyファイルを作成して、tasky.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>
, , http://**.**.com/
{% for アイテム in content %}
{% endfor %}
列名の対応する値のプライマリキーID{ item.id }}工単名称{ item.title }}申請者{ item.creator }}シートタイプ{ item.type }}作成時間{ item.create𞓜date:「Y-m-d」 H:i:s" }}承認者{ item.approveuser }}説明{ item.description }}処理人{{ item.dealuuser }}運帷回答{{ item.ops reply }}状態{ item.state }}