w00*_*00t 4 amazon-s3 amazon-sqs celery
我想使用 Celery 来使用 Amazon 在 SQS 上提供的 S3 事件。但是,S3 消息格式与Celery 期望的不匹配。
如何以最少的黑客行为使用这些消息?我应该编写自定义序列化程序吗?我应该放弃并使用 boto 或 boto3 制作自定义桥接器吗?
作为旁注,我还想将 Celery 连接到不同的代理 (RabbitMQ) 以完成其余的应用程序消息传递,如果这很重要的话。
您将需要创建一个服务来侦听 S3 通知,然后运行相应的 celery 任务。
您有多种选择 - S3 通知通过 SQS、SNS 或 AWS Lambda 发出。
事实上,最简单的选择可能是根本不使用 Celery,而只是编写一些代码以在 AWS Lambda 中运行。我还没有使用过这个服务(Lambda 是相对较新的),但看起来这意味着你不必运行监控服务或芹菜工人。
配置 AWS S3 事件以调用 AWS Lambda 函数。应编写该函数将S3事件消息转换为Celery消息格式,然后将Celery消息发布到SQS。Celery 将从 SQS 接收消息。
S3 事件 -> Lambda -> SQS -> Celery
对于我的特定用例,事实证明,最简单的方法是创建一个桥接工作程序来轮询 SQS 并使用默认代理将任务分配给 Celery。
这并不难(尽管 boto 和 SQS 可以使用更多文档),而且 Celery 不太适合同时连接到两个不同的代理,因此感觉这是最好的方法。
归档时间: |
|
查看次数: |
1885 次 |
最近记录: |