私は今日、EC2 インスタンスに独自の RabbitMQ をインストールする代替アプローチとして、Amazon SQS を検討していました。
ここで説明されているように、ドキュメントに従いました
段落内で次のように述べています。
SQS はまだイベントをサポートしていないため、セロリ イベント、セロリモン、または Django 管理モニターでは使用できません。
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の制限ですか、それとも根本的に間違っていますか? アドバイス、どうもありがとう