【问题标题】:django-celery-beat break django unexpectedlydjango-celery-beat 意外中断 django
【发布时间】:2019-11-16 11:13:27
【问题描述】:

我正在使用带有 celery 4.2.1 和 django2 的 django-celery-beat。

起初它运行良好,但在 gunicorn 日志中显示一段时间后出现以下错误

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 515, in spawn_worker
    worker.init_process()
  File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 122, in init_process
    self.load_wsgi()
  File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 130, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 366, in import_app
    __import__(module)
  File "/var/infra/app/smartwaypanel-backend/src/restfull_api/wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "/home/ubuntu/.local/lib/python3.5/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/home/ubuntu/.local/lib/python3.5/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/ubuntu/.local/lib/python3.5/site-packages/django/apps/registry.py", line 112, in populate
    app_config.import_models()
  File "/home/ubuntu/.local/lib/python3.5/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/usr/local/lib/python3.5/dist-packages/django_celery_beat/models.py", line 8, in <module>
    from celery.five import python_2_unicode_compatible
ImportError: cannot import name 'python_2_unicode_compatible'

这是一种非常奇怪的行为,我找不到更多信息。

【问题讨论】:

    标签: django gunicorn django-celery supervisord celerybeat


    【解决方案1】:

    从 4.4.7 升级到 5.0.5 后发生这种情况

        from django_celery_beat.models import PeriodicTask, IntervalSchedule, CrontabSchedule
    
    
    File "/home/someUser/PycharmProjects/some-project/venv/lib/python3.6/site-packages/django_celery_beat/models.py", line 8, in <module>
        from celery.five import python_2_unicode_compatible
    ModuleNotFoundError: No module named 'celery.five'
    

    降级回 celery==4.4.7 没问题

    包裹python_2_unicode_compatible好像错位了?

    【讨论】:

      【解决方案2】:

      最后,我为 celery 和 gunicorn 使用了不同的版本,修复了所有这些都按预期工作。

      【讨论】:

        【解决方案3】:

        替换

        from celery.five import python_2_unicode_compatible
        

        通过

        from django.utils.encoding import python_2_unicode_compatible
        

        可能会解决您的问题。

        【讨论】:

          猜你喜欢
          • 2019-11-15
          • 1970-01-01
          • 2015-01-01
          • 1970-01-01
          • 2022-01-20
          • 2018-12-28
          • 2021-12-01
          • 2021-02-25
          • 1970-01-01
          相关资源
          最近更新 更多