1

要求.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

档案

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 事物错误?项目设置时有什么我错过的吗?

4

3 回答 3

0

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

于 2015-03-31T06:25:04.053 回答
0

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

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

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

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

heroku 上的文档可能已过时。

于 2015-03-30T23:55:58.650 回答
0

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

于 2019-03-24T00:21:07.520 回答