Skip to content

Using MySQL as results DB for celery was failed due to connection string setup #1228

@sambles

Description

@sambles

CELERY_RESULT_BACKEND = '{DB_ENGINE}://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}{SSL_MODE}'.format(
DB_ENGINE=settings.get('celery', 'db_engine'),
DB_USER=urllib.parse.quote(settings.get('celery', 'db_user')),
DB_PASS=urllib.parse.quote(settings.get('celery', 'db_pass')),
DB_HOST=settings.get('celery', 'db_host'),
DB_PORT=settings.get('celery', 'db_port'),
DB_NAME=settings.get('celery', 'db_name', fallback='celery'),
SSL_MODE=settings.get('celery', 'db_ssl_mode', fallback='?sslmode=prefer'),
)

Error

File "/home/worker/.local/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data)
File "/home/worker/.local/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) 
  sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError)
  (1044, 'Access denied for user 'celery'@'%' to database 'celery""'')
  (Background on this error at: https://sqlalche.me/e/20/e3q8) 

worker version: 2.3.14
MySQL: 8.3.0
Run in oasis eval (docker compose)

seems like ?sslmode=prefer is not supported in MySQL and using CELERY_DB_SSL_MODE="" was causing the error

--> CELERY_DB_SSL_MODE= works

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions