跳转到主要内容

使用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

作者

char0n(Vladimír Gorej,CodeScale s.r.o.)
电子邮件:gorej@codescale.net

参考

项目详细信息


下载文件

下载适合您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

django-gearman-proxy-1.0.1.tar.gz (8.5 kB 查看哈希值)

上传时间:

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面