使用gearman作为消息队列的异步电子邮件和短信发送的代理后端/工作进程。
项目描述
django-gearman-proxy 是一个django应用,包含使用gearman作为消息队列的异步电子邮件和短信发送的后端/工作进程。
工作原理
电子邮件
此应用使您能够在不阻塞当前线程的情况下异步发送电子邮件,同时通过各种后端发送电子邮件消息。
您的项目设置文件中的此设置执行以下操作
# E-mails are sent to proxy backend. EMAIL_BACKEND = 'django_gearman_proxy.backends.mail.EmailBackend' # Email backend to be used inside of mail sender worker. GEARMAN_EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
所有电子邮件消息都发送到在设置 EMAIL_BACKEND 中定义的代理电子邮件后端,在此示例中为 ‘django_gearman_proxy.backends.mail.EmailBackend’。此后端将电子邮件消息序列化为json格式,并将其作为后台作业提交给gearman消息队列。django-gearman-proxy 包含一个异步电子邮件工作进程,作为django命令实现。您必须启动此命令才能让魔法生效。
$ python manage.py send_email
在send_email命令启动并运行后,它会从gearman消息队列中提取电子邮件消息作业,将其反序列化成json格式,并通过在GEARMAN_EMAIL_BACKEND中定义的后端(例如,本例中的‘django.core.mail.backends.smtp.EmailBackend’)发送。这种架构允许您直接从您的django应用程序发送电子邮件消息,而不会阻塞请求/响应周期,因为电子邮件消息是在后台发送的。
短信消息
此应用程序允许您以异步方式发送短信消息,而不会阻塞当前线程,同时通过各种后端发送短信。
您的项目设置文件中的此设置执行以下操作
# Sms messages are sent to proxy backend. SMS_BACKEND = 'sendsms.backends.smssluzbacz.SmsBackend' = 'django_gearman_proxy.backends.sms.SmsBackend' # Sms backend to be used inside of sms sender worker. GEARMAN_SMSL_BACKEND = 'sendsms.backends.smssluzbacz.SmsBackend'
所有短信消息都发送到在设置中定义的代理短信后端SMS_BACKEND,在本例中为‘django_gearman_proxy.backends.sms.SmsBackend’。此后端将短信消息序列化为json格式,并将其作为后台作业提交到gearman消息队列。django-gearman-proxy包含一个异步短信工作器,作为django命令实现。您必须启动此命令才能使魔法生效。
$ python manage.py send_sms
在send_sms命令启动并运行后,它会从gearman消息队列中提取短信消息作业,将其反序列化成json格式,并通过在GEARMAN_SMS_BACKEND中定义的后端(例如,本例中的‘sendsms.backends.smssluzbacz.SmsBackend’)发送。这种架构允许您直接从您的django应用程序发送短信消息,而不会阻塞请求/响应周期,因为短信消息是在后台发送的。
有关如何以异步工作器运行命令的更多信息,请参阅django-gearman-commands。
需求
python 2.7+
django
django_gearman_commands
smssluzbacz-api
django-sendsms
python-gearman
运行中的gearman守护进程
安装
通过pypi安装或将其模块复制到您的项目或PYTHONPATH中。
将django_gearman_proxy添加到项目的settings.py文件中的INSTALLED_APPS
INSTALLED_APPS = ( 'localeurl', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'django.contrib.sitemaps', 'web', 'debug_toolbar', 'rosetta', 'south', 'django_gearman_proxy' )
配置
django settings.py常量
# E-mails are sent to proxy backend. EMAIL_BACKEND = 'django_gearman_proxy.backends.mail.EmailBackend' # Email backend to be used inside of mail sender worker. GEARMAN_EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # Serializers for transporting EmailMessage object via gearman protocol. GEARMAN_EMAIL_SERIALIZER = 'django_gearman_proxy.serializers.mail.json.serialize' GEARMAN_EMAIL_UNSERIALIZER = 'django_gearman_proxy.serializers.mail.json.unserialize' # Sms messages are sent to proxy backend. SMS_BACKEND = 'django_gearman_proxy.backends.sms.SmsBackend' # SMS backend to be used inside of sms sender worker. GEARMAN_SMS_BACKEND = 'sendsms.backends.smssluzbacz.SmsBackend' # Serializers for transporting SmsMessage object via gearman protocol. GEARMAN_SMS_SERIALIZER = 'django_gearman_proxy.serializers.sms.json.serialize' GEARMAN_SMS_UNSERIALIZER = 'django_gearman_proxy.serializers.sms.json.unserialize'
测试
在以下环境中进行了测试
Xubuntu Linux 12.04.1 LTS precise 64位
python 2.7.3+
python unittest
django 1.4.5
gearmand 1.1.1
运行测试
要从您的django项目运行测试,请运行以下命令
$ python manage.py test django_gearman_proxy
参考
项目详细信息
django-gearman-proxy-1.0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6387afc42f71aa350cdceec5893a2eb2fa6964616dce1add93340f672e358061 |
|
MD5 | 7de0448fecfe939c882c068bbcac0190 |
|
BLAKE2b-256 | b77ac31691b537adb0a722eff3ab6c33ea95d0923a689f4330307dd18597c8d1 |