【问题标题】:Getting application error after serving Django on Herohu, 'module' object has no attribute Cling在 Herohu 上服务 Django 后出现应用程序错误,“模块”对象没有属性 Cling
【发布时间】:2015-06-02 07:51:56
【问题描述】:

requirements.txt

dj-database-url==0.3.0
dj-static==0.0.6
Django==1.7.7
django-toolbelt==0.0.1
djrill==1.3.0
gunicorn==19.3.0
Pillow==2.7.0
psycopg2==2.6
requests==2.6.0
static3==0.5.1

Procfile

web: gunicorn MY_DJANGO_APP.wsgi --log-file -

wsgi.py

​​>
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MY_DJANGO_APP.settings")

from django.core.wsgi import get_wsgi_application

from dj_static import Cling
application = Cling(get_wsgi_application())

Heroku 日志

State changed from crashed to starting
heroku[web.1]: Starting process with command `gunicorn MY_Django_App.wsgi --log-file -`
app[web.1]: [2015-03-29 07:17:55 +0000] [3] [INFO] Starting gunicorn 19.3.0
app[web.1]: [2015-03-29 07:17:56 +0000] [8] [INFO] Booting worker with pid: 8
app[web.1]: [2015-03-29 07:17:55 +0000] [3] [INFO] Listening at: http://0.0.0.0:17329 (3)
app[web.1]: [2015-03-29 07:17:55 +0000] [3] [INFO] Using worker: sync
app[web.1]: [2015-03-29 07:17:55 +0000] [7] [INFO] Booting worker with pid: 7
heroku[web.1]: State changed from starting to up
app[web.1]: [2015-03-29 07:17:56 +0000] [8] [ERROR] Exception in worker process:
app[web.1]:     self.callable = self.load()
app[web.1]:     return util.import_app(self.app_uri)
app[web.1]:   File "/app/MY_Django_App/wsgi.py", line 17, in <module>
app[web.1]: Traceback (most recent call last):
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/workers/base.py", line 118, in init_process
app[web.1]: Traceback (most recent call last):
app[web.1]:     worker.init_process()
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/workers/base.py", line 118, in init_process
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/dj_static.py", line 48, in __init__
app[web.1]: AttributeError: 'module' object has no attribute 'Cling'
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
app[web.1]:     return self.load_wsgiapp()
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/dj_static.py", line 48, in __init__
app[web.1]:     self.wsgi = self.app.wsgi()
app[web.1]:     return self.load_wsgiapp()
app[web.1]:     __import__(module)
app[web.1]:     application = Cling(get_wsgi_application())
app[web.1]: AttributeError: 'module' object has no attribute 'Cling'
app[web.1]:     application = Cling(get_wsgi_application())
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/base.py", line 67, in wsgi
app[web.1]:     return util.import_app(self.app_uri)
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/util.py", line 355, in import_app
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
app[web.1]:     self.wsgi = self.app.wsgi()
app[web.1]:     __import__(module)
app[web.1]:     self.cling = static.Cling(base_dir)
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
app[web.1]: [2015-03-29 07:17:56 +0000] [8] [INFO] Worker exiting (pid: 8)
app[web.1]:     worker.init_process()
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/base.py", line 67, in wsgi
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
app[web.1]:     self.callable = self.load()
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/util.py", line 355, in import_app
app[web.1]:   File "/app/MY_Django_App/wsgi.py", line 17, in <module>
app[web.1]:     self.cling = static.Cling(base_dir)
app[web.1]: [2015-03-29 07:17:56 +0000] [7] [ERROR] Exception in worker process:
app[web.1]:     worker.init_process()
app[web.1]:     return self.load_wsgiapp()
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/dj_static.py", line 48, in __init__
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/util.py", line 355, in import_app
app[web.1]:   File "/app/MY_Django_App/wsgi.py", line 17, in <module>
app[web.1]: Traceback (most recent call last):
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/workers/base.py", line 118, in init_process
app[web.1]:     __import__(module)
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
app[web.1]:     __import__(module)
app[web.1]:     self.cling = static.Cling(base_dir)
app[web.1]:     return self.load_wsgiapp()
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/base.py", line 67, in wsgi
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/util.py", line 355, in import_app
app[web.1]:     worker.init_process()
app[web.1]:     self.callable = self.load()
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
app[web.1]: AttributeError: 'module' object has no attribute 'Cling'
app[web.1]: [2015-03-29 07:17:56 +0000] [3] [INFO] Shutting down: Master
app[web.1]: [2015-03-29 07:17:56 +0000] [3] [INFO] Reason: Worker failed to boot.
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/base.py", line 67, in wsgi
app[web.1]:     self.cling = static.Cling(base_dir)
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
app[web.1]:   File "/app/MY_Django_App/wsgi.py", line 17, in <module>
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/workers/base.py", line 118, in init_process
app[web.1]:     self.callable = self.load()
app[web.1]: AttributeError: 'module' object has no attribute 'Cling'
app[web.1]:     return util.import_app(self.app_uri)
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/dj_static.py", line 48, in __init__
app[web.1]:     self.wsgi = self.app.wsgi()
app[web.1]:     return util.import_app(self.app_uri)
app[web.1]: Traceback (most recent call last):
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
app[web.1]:     application = Cling(get_wsgi_application())
app[web.1]:     application = Cling(get_wsgi_application())
app[web.1]:     self.wsgi = self.app.wsgi()
app[web.1]: [2015-03-29 07:17:56 +0000] [7] [INFO] Worker exiting (pid: 7)
heroku[web.1]: State changed from up to crashed
heroku[web.1]: Process exited with status 3
heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/feed" host=MY_Django_App.herokuapp.com request_id=e6de6503-58ea-4a05-b8fc-20321ace144a fwd="91.133.185.43" dyno=web.1 connect=5000ms service= status=503 bytes=

更引人注目的错误

app[web.1]:     self.wsgi = self.app.wsgi()
app[web.1]:     return self.load_wsgiapp()
app[web.1]:     __import__(module)
app[web.1]:     application = Cling(get_wsgi_application())
app[web.1]: AttributeError: 'module' object has no attribute 'Cling'
app[web.1]:     application = Cling(get_wsgi_application())

我应该如何处理 Cling 事物错误?在项目设置过程中我有什么遗漏吗?

【问题讨论】:

  • 首先,日志文件的输出似乎被打乱了。这条线似乎是引发错误的地方self.cling = static.Cling(base_dir)。我不了解 gunicorn 或 heroku,但据我所知,该错误很可能是由某些不正确的 python 包版本或缺少某些 python 包引起的。
  • 感谢您的评论,但我使用的是教程中提到的相同版本:dj-static==0.0.6

标签: django heroku gunicorn django-settings django-wsgi


【解决方案1】:

错误本身意味着某些东西正在调用python模块上的方法或获取属性,而不是模块内的类。

如果您的模块文件名与内部的类相同,则可能会发生这种情况。也就是说,如果你有 cling.py 并且里面是一个名为 cling 的 python 类。

我对 python3 不太了解,我不确定是什么原因造成的,我很想说这可能是循环依赖问题,或者可能是 dj-static 的依赖之一,即 static 已更新并导致这个问题?

也许尝试在您的要求中仅指定 dj-static 并删除对 static 的依赖,因为我认为 dj-static 应该自行解决其对 static 的依赖,这可能会导致冲突。

heroku 上的文档可能已经过时了。

【讨论】:

  • 我认为 dj-static 不稳定且维护良好。 DjangoWhiteNoise 做得很好。感谢您的跟进。
【解决方案2】:

我开始使用 DjangoWhiteNoise 而不是 dj-static 并且没有更多问题。

【讨论】:

    【解决方案3】:

    就我而言,我在子目录中有一个无关的__init__.pyc,它不应该在。 (原因:当我移动模块时,__init__.py 被正确删除,但编译后的__init__.pyc 被留下了。)
    Django 的自动发现然后抛出了这个错误。
    删除不需要的__init__.pyc 文件修复了它。

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 2022-11-28
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多