使用现有amazon sqs队列的django包

django-sqs-qc的Python项目详细描述


Django SQS质量控制
========== < BR>
作者:maciej pasternacki<;maciej@pasternacki.net>;
日期:2010-01-15周五
维护者:nauman tariq<;nauman3128@gmail.com>; < BR>
介绍:
django sqs的修改版本(https://pypi.python.org/pypi/django sqs/0.2)
每次启动worker listener时,实际的django sqs都会创建新队列
在此修改版本中,它使用现有的消息队列。 < BR>< BR>
在django项目中集成amazon简单队列服务 < BR>
目录
================= < > 1设置
2个接收器
2.1使用decorator注册
2.2手动注册
2.3示例接收器
3接收
4发送
4.1使用修饰函数
4.2手动
5个自定义消息类
5.1 ModelInstanceMessage类
6管理
6.1 manage.py sqs\u状态
6.2 manage.py sqs\u清除
6.3 manage.py sqs\u等待 7种观点 8次固定
8.1合理的分叉/线程或多路复用,而不是分叉黑客?
8.2从应用程序自动导入receivers.py
8.3文档字符串
8.4最小化轮询
8.5将消息保留在队列中的自定义异常 < BR>< BR>
1设置
~~~~~~~~
访问Amazon Web服务需要Boto库。 < BR>
1。将"django_sqs"添加到python路径
2。将"django_sqs"添加到已安装的应用程序设置
3。设置aws_access_key_id,aws_secret_access_key
4。可以选择设置sqs_queue_prefix作为队列前缀并避免
与其他开发人员、生产/准备环境等发生冲突。
debug为true时需要sqs_queue_前缀,建议
即使在生产模式下。
5。可选设置sqs_default_visibility_timeout(默认值为60秒)
6。可选择设置sqs_poll_period(默认值为10秒)
7。可选设置aws_region(默认为"us-east-1") < BR>
2个接收器
~~~~~~~~~~~~
创建接受一个参数的接收器函数,该参数将是
"boto.sqs.message.message"或其自定义子类的实例。
然后,将其注册为队列接收器: < BR>
2.1使用decorator注册
===============================
用以下内容装饰接收器功能: < BR>
django sqs.receiver([队列名称=无,可见性超时=无,消息类=无,开始时删除=假,关闭数据库=假,后缀=)) < BR>
修饰函数将成为
"django_sqs.registered_queue.registeredqueue.receiverproxy"类。
实例是可调用的-您可以使用
适当的消息类或其构造函数的关键字参数,
消息将被添加到队列中。实例还提供
具有原始修饰函数的"direct"属性,以及
"已注册的队列"
"django_sqs.registered_queue.registeredqueue"实例。 < BR>
如果"queue\u name"被省略或为false,则函数的"uu module"和
"name"用于将点转换为双下划线。 < BR>
"suffix"参数是已知队列名称后缀的元组。如果
使用未知后缀时,将发出警告。 < BR>
如果"delete_on_start"为真,则收到的邮件将从
在接收到队列后,在接收函数为
已呼叫。如果为false(这是默认值),则将删除它
在接收器功能完成后,当消息已满时
已处理。 < BR>
如果"关闭数据库"为true,则所有数据库连接都将为
在处理每个消息后关闭,以防止挂起的未关闭
交易。 < BR>
队列名称后缀可用于分割处理类似的项
到多个队列(例如,使用单独的qu大输入项的EUE
分配负载)。 < BR>
2.2手动注册
======================
或者,您可以避免装饰,并注册一个接收器
手动调用: < BR>
django_sqs.register(队列名称,[fn=none,可见性超时=none,消息类=none,开始时删除=false,后缀=)) < BR>
如果"fn"为none或not-given,则不分配处理程序:消息可以
发送,但不会收到。 < BR>
在默认导入的模块中创建函数
(建议:使用"receivers.py"并将其导入"models.py",
自动导入待定)。 < BR>
2.3示例接收器
=====================
@接收器("测试")
定义接收消息(消息):
打印"已接收:",msg.get_body() < BR>
3接收
~~~~~~~~~~~~
python manage.py runreceiver[--message limit=n][--后缀=后缀][队列名称[队列名称[…]] < BR>
如果没有给出"queue\u name"参数,则从所有配置的
排队。 < BR>
如果注册了多个队列,将为
每个队列。 < BR>
对于队列中接收到的每条消息,注册的接收方函数
以消息实例作为参数调用。中频接收机
函数返回成功,然后从队列中删除消息。
如果接收器消息引发异常,则异常回溯为
使用日志记录模块记录,并删除消息。中频接收机
看到可重新启动的错误并希望将消息保留在队列中,它
应引发"django sqs.restartlater"异常-此异常将
将消息保留在队列中。 < BR>
选项: < BR>
`--message limit=n':收到"n"条消息后退出
`--suffix=suffix':使用队列名称后缀 < BR>
4发送
~~~~~~~~~~ < BR>
4.1使用修饰函数
=============================
您可以简单地调用用`@receiver'装饰符装饰的函数,
提供消息实例或关键字参数(例如"send"
下面介绍的功能)。 < BR>
4.2手动
=============
要手动发送消息,请使用以下功能: < BR>
django_sqs.send(队列名称,消息=无,后缀=无,**kwargs) < BR>
`message'应该是配置为
队列的"receiver"decorator或"register"函数(或
`boto.sqs.message.message')。 < BR>
当省略"消息"或"无"时,队列消息的新实例
类将使用`**kwargs'实例化。带默认消息
类"boto.sqs.message.message",我们只需提供body: < BR>
django_sqs.send("a_queue",body='lorem ipsum dolor sit amet') < BR>
"suffix"是要使用的队列名称后缀。 < BR>
5个自定义消息类
~~~~~~~~~~~~~~~~~~~~~~~~~
用于发送原始、非Unicode字符串以外的其他值
"boto.sqs.message"或其子类中提供的类可以是
已使用。这个模块的评论很好(比这个好得多),所以
继续读这篇文章吧! < BR>< BR>
5.1 ModelInstanceMessage类
===============================

方便。它使用django的
ContentType框架(作为应用程序/模型/主键三元组)。它
在构造函数中接受"instance"关键字参数,并提供
"get_instance()"方法。 < BR>
除了
实例还没有。 < BR>
6管理
~~~~~~~~~~~~~ < BR>
6.1 manage.py sqs\u状态
=========================
打印队列中消息的(近似)计数。 < BR>
6.2 manage.py sqs\u清除
========================
清除所有队列(按def或名为参数的队列。
打印删除的邮件数。 < BR>
如果队列接收器正在运行或最近正在运行,则
邮件可能仍处于锁定状态,不会被删除。命令可能
需要重新运行。 < BR>
6.3 manage.py sqs\u等待
=======================
等待指定(或全部)队列为空。 < BR> 7种观点
~~~~~~~~
为simple提供单个视图"django_sqs.views.status",
纯文本队列状态报告(与"manage.py sqs\u status"相同)。 < BR> 8次固定
~~~~~~~~ < BR>
8.1如何使用合理的分叉/线程或多路复用来代替分叉?
============================================================================== < BR>
8.2从应用程序自动导入接收器.py
============================================== < BR>
8.3 TOdo文档字符串
==================== < BR>
8.4 todo最小化轮询
==========================
每次通话亚马逊都收费。少投票,少发票。一些
指数退避+带外信号(视图?)唤醒跑步
接收过程可能是一件好事。 < BR>
8.5将消息保留在队列中的todo自定义异常
====================================================
提供一个自定义异常类,Receive不会处理该类
接收器函数可以使用的循环(即无回溯)
显式地将消息保留在队列中,而不打印回溯和
惊动所有人。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
trycatch块中的java,是否“最终”覆盖异常块中的“返回”?   java在无限循环运行时,不明白为什么   导入javax时发生java错误。jnlp库   java Android:通过编程方式从微调器创建ArrayList   java Apache camel在处理所有文件后创建空ctl文件   运行外部文件Java   批处理文件Java关于运行时的混淆。memory()与Windows的物理内存使用历史记录图   java Play Framework 2/冗余对象验证   java如何纠正“注入目标不能声明为静态的”警告   java使用“this::content”或“::content”不按预期工作,包含来自同一thymeleaf模板的片段   无法使用Java和Apache POI写入Excel文件   java仅使用Twitter4j搜索带有图片/媒体的推文   java Hibernate惰性加载在@OneToOne映射中不起作用   java从外部存储器读取数据库文件   java从引用bean的映射中获取键值   java Springboot应用在实现MongoRepository时无法运行   java从2d数组返回多个匹配项   java文件>字节[]>字符串>字节[]>文件转换   JavaFX按钮释放事件