Errno 13:权限被拒绝:“celerybeat-schedule”,Celery 在 AWS ECS 和 SQS 上运行

问题描述 投票:0回答:1

我有一个单独的 Celery Beat 和 Work 服务在 ECS 中运行。该工作人员与 SQS 的连接似乎正常。另一方面,The Beat 却给我带来了麻烦。我使用这些说明作为我正在做的事情的模板。

https://dev.to/daiquiri_team/deploying-django-application-on-aws-with-terraform-setting-up-celery-and-sqs-38ik

我有点偏离,因为我已经有一个在 AWS 中运行的现有 Terraform/Django 项目。 Django项目也在ECS上。

我很难知道要寻找什么,因为错误相当模糊。为什么计划会创建“权限被拒绝”? Beat 是否正在尝试写入 SQS?我目前有 4 个队列。

我正在从容器定义中执行以下命令:

celery -A backend beat

我还在容器定义中运行以下内容,因为我读到 ECS 始终以 root 身份运行。

{"name": "C_FORCE_ROOT", "value": "true"}
django amazon-web-services celery amazon-sqs
1个回答
0
投票

根据官方 Celery Beat 文档(在“启动调度程序”部分下):

Beat 需要将任务的最后运行时间存储在本地数据库文件(默认名称为 celerybeat-schedule)中,因此需要在当前目录中进行写入,或者您可以为此文件指定自定义位置:

celery -A proj beat -s /home/celery/var/run/celerybeat-schedule

所以我认为您只需要提供一个容器可以通过

-s
标志写入文件的路径。

© www.soinside.com 2019 - 2024. All rights reserved.