【发布时间】:2013-01-10 00:57:39
【问题描述】:
我今天正在研究将 Amazon SQS 作为在 EC2 实例上安装我自己的 RabbitMQ 的替代方法。
我已按照here 所述的文档进行操作
在一段中它说:
SQS 还不支持事件,因此不能与 celery 一起使用 事件、celerymon 或 Django Admin 监视器。
我有点困惑events 在这里的含义。例如在下面的场景中,我每分钟都有一个周期性任务,我异步调用sendEmail.delay(event)。
例如
@celery.task(name='tasks.check_for_events')
@periodic_task(run_every=datetime.timedelta(minutes=1))
def check_for_events():
now = datetime.datetime.utcnow().replace(tzinfo=utc,second=00, microsecond=00)
events = Event.objects.filter(reminder_date_time__range=(now - datetime.timedelta(minutes=5), now))
for event in events:
sendEmail.delay(event)
@celery.task(name='tasks.sendEmail')
def sendEmail(event):
event.sendMail()
使用 Amazon SQS 运行它时,我收到以下错误消息:
tasks.check_for_events[7623fb2e-725d-4bb1-b09e-4eee24280dc6] 提出 异常:TypeError(' 是 不是 JSON 可序列化的',)
那么是文档中指出的 SQS 的限制,还是我做错了什么? 非常感谢您的建议,
【问题讨论】:
标签: django celery django-celery amazon-sqs