Как настроить DB для Django, Celery и SQS
Я пытаюсь выгрузить задачу montecarlo в Celery и сохранить результаты в PostgreSQL AWS DB (RDS)
из файла views.py:
newResults = MonteCarloResultTrue.objects.create(htmlCompanyArray = "[]")
viewRun = runMonteCarloAsync.delay(checkedCompaniesIDs,newResults.id)
Объект создан, но в tasks.py объект DB не редактируется:
@app.task(bind=True)
def runMonteCarloAsync(self,checkedCompaniesIDs, calc_id):
newResults = MonteCarloResultTrue.objects.get(id=calc_id)
newResults.htmlCompanyArray = "[asdf]"
newResults.save()
Как я могу обновить БД из задачи Celery? Нужно ли мне явно указать Celery, где искать БД? (settings.py):
CELERY_accept_content = ['application/json']
CELERY_task_serializer = 'json'
CELERY_TASK_DEFAULT_QUEUE = 'django-queue-dev'
CELERY_BROKER_URL = 'sqs://{0}:{1}@'.format(
urllib.parse.quote(AWS_ACCESS_KEY_ID, safe=''),
urllib.parse.quote(AWS_SECRET_ACCESS_KEY, safe='')
)
CELERY_BROKER_TRANSPORT_OPTIONS = {
"region": "us-east-1",
'polling_interval': 20
}
CELERY_RESULT_BACKEND = 'django-db'
CELERY_CACHE_BACKEND = 'django-cache'
Что я упускаю?
Проблема была в моем Procfile. Я изменил его на:
celery_worker: celery -A rvm worker --loglevel=INFO
и теперь я могу сохранять в задаче (Используя Celery 5.x)