我今天正在研究将 Amazon SQS 作为在 EC2 实例上安装我自己的 RabbitMQ 的替代方法。
我已按照此处所述的文档进行操作
在一段中它说:
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(' is not JSON serializable',)
那么,这是文档中指出的 SQS 的限制,还是我在做一些根本错误的事情?非常感谢您的建议,