django - Heroku 上的女服务员给出错误

标签 django heroku procfile waitress

我正在尝试从 Heroku 上的 Gunicorn 切换到 Waitress。在日志中,我不断收到来自女服务员的错误:

Error: Bad module 'cardisle'

在我的 procfile 中,我有:

web: waitress-serve --port=$PORT cardisle.wsgi:application

如果我删除 .wsgi 扩展名,则会收到不同的错误:

Error: Bad object name 'application'

我也尝试将对象名称更改为 wsgifunc,因为它位于 Waitress 文档中,但没有成功。

如有任何帮助,我们将不胜感激。我有一个 wsgi.py 文件,其中包含以下内容:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cardisle.settings")
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

最佳答案

关于女服务员,有一个可怕的事实:它向您隐藏信息。

如果你看source ,“Bad Module”是“从 wsgi 模块导入应用程序失败”的代码。

要查看错误,请尝试:

  1. 使用 heroku run bash 登录 dyno
  2. 导航到其中包含 wsgi.py 的目录(使用 cd)
  3. 使用python打开shell
  4. 运行导入wsgi

当我遇到此错误并执行此操作时,我得到:

~/proj/proj $ python

Python 2.7.9 (default, Dec 11 2014, 17:18:51) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import wsgi

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "wsgi.py", line 36, in <module>
    application = get_wsgi_application()
  File "/app/.heroku/python/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
    django.setup()
  File "/app/.heroku/python/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/apps/config.py", line 86, in create
    module = import_module(entry)
  File "/app/.heroku/python/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)

ImportError: No module named debug_toolbar

这是一个更有帮助的错误。就我而言,我在生产中将 DJANGO_SETTINGS_MODULE 设置为“本地”(没有适当的要求),因此导入失败。

您的问题的确切性质会有所不同,但我会提到一个在我开始时令我沮丧的案例:

如果您正在运行 web: waitress-serve --port=$PORT cardisle.wsgi:application,您可能需要更改 PYTHONPATH 环境变量,以便 PYTHONPATH+cardisle.wsgi 完全是一个- 在相关机器上形成现有路径。

今晚我会为女服务员打开一个 PR,试图解决导入错误。否则祝你好运!

关于django - Heroku 上的女服务员给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821597/

相关文章:

ruby-on-rails - 在 Rails 中存储(结构化)配置数据的位置

java - 如何使用 Postgresql 数据库在 Heroku 上部署?

django - 一个 Heroku 应用程序中的两个进程 vs 两个 heroku 应用程序

django - 在当前目录中找不到 Procfile 和 package.json 文件 - 请参阅 run-foreman.js

python - 为什么我的 extjs 组合框没有动态填充?

django - route53 裸域未到达亚马逊弹性负载均衡器

jquery - 如何在 Django 中正确执行 AJAX 请求

node.js - 如何在同一个 Heroku 应用程序上部署前端和后端 Node.js?

c - 退出函数后如何在c中保持文件句柄打开

javascript - 在 Django 中本地化 Javascript 内容时出错