celery_任务保存到数据库出错_django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localh

9 篇文章 0 订阅
3 篇文章 0 订阅

问题描述:

安装django_celery_results后,将任务结果保存在数据库中,但是在成功运行完任务时将执行结果保存在数据库中时报错

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 11001] No address found)")
 

如下:

Traceback (most recent call last):
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\celery\app\trace.py", line 449, in trace_task
    uuid, retval, task_request, publish_result,
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\celery\backends\base.py", line 149, in mark_as_done
    self.store_result(task_id, result, state, request=request)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\celery\backends\base.py", line 407, in store_result
    request=request, **kwargs)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django_celery_results\backends\database.py", line 35, in _store_result
    task_kwargs=task_kwargs,
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django_celery_results\managers.py", line 50, in _inner
    return fun(*args, **kwargs)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django_celery_results\managers.py", line 126, in store_result
    obj, created = self.get_or_create(task_id=task_id, defaults=fields)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\models\query.py", line 538, in get_or_create
    return self.get(**kwargs), False
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\models\query.py", line 402, in get
    num = len(clone)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\models\query.py", line 256, in __len__
    self._fetch_all()
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\models\query.py", line 1242, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\models\query.py", line 55, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1131, in execute_sql
    cursor = self.connection.cursor()
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\backends\base\base.py", line 256, in cursor
    return self._cursor()
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\backends\base\base.py", line 233, in _cursor
    self.ensure_connection()
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
    self.connect()
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
    self.connect()
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\backends\base\base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\django\db\backends\mysql\base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\pymysql\__init__.py", line 94, in Connect
    return Connection(*args, **kwargs)
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\pymysql\connections.py", line 325, in __init__
    self.connect()
  File "f:\django_learn_project3\mysite\venv\lib\site-packages\pymysql\connections.py", line 630, in connect
    raise exc
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 11001] No address found)")

原因分析:

无法在localhost上连接mysql服务器

解决方案:

在django项目settings.py中设置DATABASES的中 [HOST] 的[localhost]改为[127.0.0.1]

完成代码如下

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'project51_database',
        'USER': "root",
        "PASSWORD": "root",
        "HOST": "127.0.0.1",
        "PORT": "3306",
    }
}

再次启动django服务和worker,结果保存成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值