【问题标题】:Django + Celery with AWS SQS - Running on localhost instead of AWS and not getting messages带有 AWS SQS 的 Django + Celery - 在 localhost 而不是 AWS 上运行并且没有收到消息
【发布时间】:2020-06-10 20:01:15
【问题描述】:

您好,我在 aws SQS 上运行 Django 和 Celery,但 AWS 似乎没有收到消息。但是任务正在执行中:

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

  uid=uid, euid=euid, gid=gid, egid=egid,

 -------------- celery@ba117e7c453f v4.4.0 (cliffs)
--- ***** -----
-- ******* ---- Linux-4.9.125-linuxkit-x86_64-with 2020-02-26 20:21:14
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         config:0x7f10e26fada0
- ** ---------- .> transport:   sqs://XXXXXXXXXXXXX:**@localhost//
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 2 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . config.celery.debug_task
  . project.orders.tasks.create_log_test

[2020-02-26 20:21:14,909: INFO/MainProcess] Connected to sqs://XXXXXXXXXXXX:**@localhost//
[2020-02-26 20:21:15,327: INFO/MainProcess] celery@ba117e7c453f ready.
[2020-02-26 20:21:32,895: INFO/MainProcess] Received task: project.orders.tasks.create_log_test[d4c20965-b1f2-47dd-b8a8-6f9cbe35be29]
[2020-02-26 20:21:53,648: INFO/ForkPoolWorker-2] Task project.orders.tasks.create_log_test[d4c20965-b1f2-47dd-b8a8-6f9cbe35be29] succeeded in 20.695041599974502s: None
[2020-02-26 20:22:39,801: INFO/MainProcess] Received task: project.orders.tasks.create_log_test[1d1b0892-078c-480c-ab7a-87662fd18ba3]
[2020-02-26 20:22:41,622: INFO/MainProcess] Received task: project.orders.tasks.create_log_test[6e755a91-b737-4e09-b910-03e84fd91c32]
[2020-02-26 20:22:43,237: INFO/MainProcess] Received task: project.orders.tasks.create_log_test[5fe1f145-a6d3-45d3-8ada-b1c636ee201c]
[2020-02-26 20:22:44,506: INFO/MainProcess] Received task: project.orders.tasks.create_log_test[84da9170-7861-488d-936f-5d3738e11af4]
[2020-02-26 20:22:47,056: INFO/MainProcess] Received task: project.orders.tasks.create_log_test[748dda1c-3b6d-40e6-b13b-637ea765dd72]

在 AWS 控制台上:

这是我的 settings.py:

BROKER_URL = "sqs://{access_key}:{secret_key}@".format(
    access_key=quote(AWS_ACCESS_KEY_ID, safe=""),
    secret_key=quote(AWS_SECRET_ACCESS_KEY, safe=""),
)

BROKER_TRANSPORT_OPTIONS = {
    "region": "eu-west-1",
    "visibility_timeout": 60,  # 1 minutes
    "polling_interval": 5,  # 5 seconds
    "queue_name_prefix": "sqs-celery-example-",
}

# CELERY namespaced
CELERY_BROKER_URL = BROKER_URL
CELERY_BROKER_TRANSPORT_OPTIONS = BROKER_TRANSPORT_OPTIONS
CELERY_TASK_DEFAULT_QUEUE = "default"

我是不是做错了什么?

【问题讨论】:

    标签: django amazon-web-services celery amazon-sqs


    【解决方案1】:

    解决了!问题是我没有把网址放在“@”之后。

    BROKER_URL = "sqs://{access_key}:{secret_key}@sqs.eu-west-3.amazonaws.com/XXXX/XXXX.fifo".format(
        access_key=quote(AWS_ACCESS_KEY_ID, safe=""),
        secret_key=quote(AWS_SECRET_ACCESS_KEY, safe=""),
    )
    

    【讨论】:

    • 我也面临同样的问题,但我使用 redis 作为我的代理 ?
    猜你喜欢
    • 2020-12-26
    • 2020-03-04
    • 2019-10-17
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2019-02-02
    • 2020-05-28
    • 2015-03-23
    相关资源
    最近更新 更多