Amazon SQSをDjangoアプリケーションのCeleryのデフォルトのメッセージブローカーとして設定しようとしています。 Celeryワーカーが起動していますが、ブローカはデフォルトのRabbitMQに設定されています。あなたの下に私の労働者のアウトプットを見つけることができます。Django + Celery + SQSの設定。 Celeryがampq経由でデフォルトのRabbitMQに接続します
ここに私がプロジェクトに持っているいくつかの設定があります。ブローカーのURLのセットアップを担当するDjangoのセロリの設定の本質的な部分がある
from __future__ import absolute_import
import os
from celery import Celery
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dance.settings')
app = Celery('dance')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
:
BROKER_URL = 'sqs://{}:{}@'.format(AWS_ACCESS_KEY_ID, quote(AWS_SECRET_ACCESS_KEY, safe=''))
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
'polling_interval': 3,
'visibility_timeout': 300,
'queue_name_prefix':'dev-celery-',
}
私は、仮想環境内のワーカーを起動しようとしています:
のように私のcelery.pyに見えますcelery -A dance worker -l info
私は、次の受信出力:
-------------- [email protected] v4.0.0 (latentcall)
---- **** -----
--- * *** * -- Linux-4.8.0-28-generic-x86_64-with-debian-stretch-sid 2016-12-02 14:20:40
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: dance:0x7fdc592ca9e8
- ** ---------- .> transport: amqp://guest:**@localhost:5672//
- ** ---------- .> results:
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
...
task1
task2
...
タスクがリストされているので、Celeryが関連するDjango設定を取得して処理すると思います。設定をSQSからRedisに切り替える場合、同じ問題が発生します。
読者のチュートリアルからわかるように、作業者の出力は次のようになります。
- ** ---------- .> transport: sqs://*redacted*:**@localhost//
- ** ---------- .> results: djcelery.backends.database:DatabaseBackend
また、私はdjcelery
までは古くなっています。代わりに、私はdjango_celery_results
を使用しています。これはCeleryセットアップページで推奨されています。最後の出力は、サイドプロジェクトからの推測です。