У меня есть две базы данных (а именно, тест и сельдерей). Когда запускается задача сельдерея, она сначала обновляет базу данных «test» с результатами, а затем обновляет базу данных «celery» сообщением об успехе / неудаче.
Я защитил эти БД с помощью учетных данных и следовал этому методу:
https://medium.com/@matteocontrini/how-to-setup-auth-in-mongodb-3-0-properly-86b60aeef7e8
Теперь, когда я запускаю свою задачу, она выдает мне эту ошибку:
pymongo.errors.OperationFailure: не разрешено для сельдерея выполнять команду {createIndexes: "celery_taskmeta", индексы: [{key: {date_done: 1}, фон: "true", имя: "date_done_1"} ]}
Я использую:
mongodb: 3.4
mongoengine: 0,16
django 2.1 и python3
mongoengine.connect(db="test",host=config.host,username="admin_1",
password="admin1234",authentication_source="admin")
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = "mongodb"
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
Помимо метода, упомянутого в ссылке выше, я попытался создать пользователя с правами администратора в базе данных администратора следующим образом:
use admin
db.createUser(
{
user: "admin_1",
pwd: "admin1234",
roles: [
{
role: "dbOwner",
db: "test"
},
{
role: "userAdminAnyDatabase",
db: "admin"
},
{
role: "dbOwner",
db: "celery"
}
]
}
)
Выдает ту же ошибку!