2016-06-16 17 views
1

Hallo Ich muss django Sellerie in der Produktion mit SQS laufen, aber es funktioniert nicht. Ich habe in meinen Einstellungen diese Konfigurationen:Wie man Djangosellerie mit SQS laufen lässt?

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' 

Ich weiß nicht, was sonst noch hinzufügen, oder was andere tun, um die djcelery Aufgaben laufen zu lassen. Bitte helfen Sie.

Danke ....

Antwort

0

ich gerade geschafft haben, Sellerie und SQS zu verbinden.

In meiner Einstellungen:

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 
          } 

Oben, beachten Sie BROKER_RUL = 'sqs: //':

Die Anmeldedaten können auch die Umgebungsvariablen eingestellt werden AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY, in In diesem Fall der Broker URL möglicherweise nur sqs: //.

source.

Beachten Sie, dass Sie einen Mitarbeiter benötigen, der für die Interaktion mit SQS aktiv ist. Über die Konsole (in Ihrer virtuellen Umgebung):

$ celery -A proj worker -l info 

source

0

Wenn Sie mit Sellerie 4.0.0 und haben diese Linie

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

Namespace sagt, dass alle Sellerie bezogenen Einstellungen beginnen sollten mit SELLER

Verwenden Sie dann CELERY_BROKER_URL, CELERY_BROKER_TRANSPORT_OPTIONS.

Verwandte Themen