如何使用SQS运行Django芹菜



您好,我需要使用SQS生产中的Django芹菜,但这行不通。我在我的设置中具有这些配置:

BROKER_URL = 'sqs://' + AWS_ACCESS_KEY_ID + ':' + AWS_SECRET_ACCESS_KEY + '@'
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
    'region': 'us-east-1',
    'visibility_timeout': 3600,
    # 'polling_interval': 0.3,
    # 'queue_name_prefix': 'celery-',
}
BROKER_USER = AWS_ACCESS_KEY_ID
BROKER_PASSWORD = AWS_SECRET_ACCESS_KEY
CELERY_DEFAULT_QUEUE = 'mall4g-sqs'
CELERY_QUEUES = {
    CELERY_DEFAULT_QUEUE: {
        'exchange': CELERY_DEFAULT_QUEUE,
        'binding_key': CELERY_DEFAULT_QUEUE,
    }
}
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ENABLE_UTC = True
CELERYBEAT_SCHEDULE = {
    'orders-expired-task': {
        'task': 'orders.tasks.orders_expired',
        'schedule': timedelta(hours=2)
    },
    'remember-set-card': {
        'task': 'orders.tasks.remember_set_credit_card',
        'schedule': timedelta(days=14)
    },
    'example': {
        'task': 'orders.tasks.example',
        'schedule': timedelta(minutes=5)
    },
}
# needed for worker monitoring
CELERY_SEND_EVENTS = True
# where to store periodic tasks (needed for scheduler)
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
CELERY_TIMEZONE = 'UTC'

我不知道还有什么添加或其他操作来完成DJCelery任务。请帮助。

谢谢....

如果您使用的是芹菜4.0.0并具有此行

app.config_from_object('django.conf:settings', namespace='CELERY')

命名空间告诉所有与芹菜相关的设置都应以芹菜

开头

使用celery_broker_url,celery_broker_transport_options。

我刚刚设法将芹菜和SQ链接起来。

在我的设置中:

BROKER_URL = 'sqs://'
BROKER_TRANSPORT_OPTIONS = {'region': 'eu-west-1',
                            'visibility_timeout': 43200,# in seconds
                            'polling_interval': 3,
                            'queue_name_prefix':'repricer-stage-',
                            'CELERY_SEND_TASK_ERROR_EMAILS': True
                            }

上面,请注意Broker_rul ='sqs://':

也可以使用环境变量设置登录凭据 AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,在这种情况下 URL可能仅为sqs://。

来源。

请注意,您需要一个活跃的工人才能与SQ互动。通过控制台(在虚拟环境中):

$ celery -A proj worker -l info

最新更新