【问题标题】:Serving Django 1.7 application using CherryPy使用 CherryPy 为 Django 1.7 应用程序提供服务
【发布时间】:2014-11-17 06:27:37
【问题描述】:

我正在尝试使用 CherryPy 为 Django 1.7 应用程序提供服务。启动脚本如下:

import wsgiserver
import sys
import os
import django.core.handlers.wsgi


if __name__ == "__main__":
    sys.path.append(os.path.realpath(os.path.dirname(__file__)))  # add django project absolute path
    # Startup Django
    os.environ['DJANGO_SETTINGS_MODULE'] = 'my_project.settings'
    server = wsgiserver.CherryPyWSGIServer(('127.0.0.1', 8001), django.core.handlers.wsgi.WSGIHandler())
try:
    server.start()
except KeyboardInterrupt:
    print 'Stopping'
    server.stop()

一切都设置好了。但是,当我尝试访问应用程序(django 成功页面)时出现错误:

AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don't make non-lazy gettext calls at import time.

阅读后,我发现您在 runserver 之前运行迁移,并将 django.setup() 添加到 wsgi.py。遗憾的是,该解决方案对我不起作用。

我做错了什么?

提前谢谢你。

【问题讨论】:

  • Django 1.7 在设置时导入所有模型文件。如果你在模型中做一些依赖于已经发生的设置的事情(比如非惰性 gettext,它需要知道当前语言),那么就会失败并出现该错误。

标签: python django cherrypy


【解决方案1】:

我不知道这是否是正确的解决方案,但我能够通过插入在自己的代码中解决此问题

django.setup()

在调用后立即定义设置模块。

【讨论】:

    【解决方案2】:

    我通过在 wsgiserver2.py 中导入后运行 django.setup() 让它工作。

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 2020-08-18
      • 2013-02-01
      • 2022-08-14
      • 2017-02-07
      • 1970-01-01
      • 2012-09-01
      • 2019-07-29
      • 1970-01-01
      相关资源
      最近更新 更多