【问题标题】:Django strange behavior: manage.py commands do not endDjango 奇怪行为:manage.py 命令没有结束
【发布时间】:2013-08-05 07:16:53
【问题描述】:

在最后几天,我在我的一个 django 项目中观察到一种非常奇怪的行为:

当我运行一些manage.py 命令时,我发现虽然这些命令被执行了,但它们并没有结束。例如,如果我尝试运行 syncdb:

c:\django> python manage.py syncdb 正在同步... 创建表... 创建表 questions_category 创建表 questions_question 创建表格 questions_answer 安装自定义 SQL ... 安装索引... 从 0 个固定装置中安装了 0 个对象

此时我应该得到一个命令输入——但我没有!我与其他各种 manage.py 命令有相同的行为 - 它们运行正常但它们不退出(例如 dumpdata 或 loadata - 数据被转储/加载正常但是当这些完成时我没有得到命令提示符) !有没有人观察到同样的行为?有没有办法调试它?我尝试在我的 settings.py 末尾添加打印语句,我可以毫无问题地看到输出。

另外,我遇​​到的另一个可能与上述有关的问题是 runserver_plus 命令不再能够找出代码更改。因此,当我运行 manage.py runserver_plus 并更改例如我的 settings.py 时,我会看到:

* 检测到 'C:\\progr\\py\\adeies\\adeies\\settings.py' 的变化,重新加载

它停在那里 :( 它不会重新加载应用程序!使用普通的 runserver 可以毫无问题地重新加载应用程序,但是出于显而易见的原因,我更喜欢使用 runserver_plus 命令。

您对如何调试有任何想法吗?

谢谢!

【问题讨论】:

  • 尝试在 no reload mod 中运行它,看看你是否遇到这里建议的异常:stackoverflow.com/questions/4167250/…。命令是 python manage.py runserver --noreload
  • 您还可以通过提供-v3 选项使命令输出更详细,其中数字是详细级别,3 是最高级别。见./manage.py syncdb --help--traceback 也可能会有所帮助。
  • @Ricola3D python manage.py runserver --noreload 工作正常(当然,当我更改它时它不会重新加载应用程序)
  • 请列出您正在使用的 (django) 包。我猜有些事情会意外启动一个线程,这可能会导致 Django 挂起(等待所有线程停止)。
  • @bouke 是的!!!!这就是问题所在:我使用了一个名为 django-live-profiler 的包,它使用 zmq 来保存一些统计信息。当我从我的 INSTALLED_APPS 中删除它时,一切都恢复正常了!请添加答案,以便我接受。

标签: python django django-manage.py


【解决方案1】:

某些依赖项可能正在启动一个线程。当自动重新加载代码更改或执行管理命令时,Django 将等待所有线程完成。检查所有依赖项以确定可能导致此问题的依赖项。

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 2015-03-28
    • 1970-01-01
    • 2012-04-05
    • 2011-04-30
    • 2012-06-21
    • 2022-01-05
    • 2015-12-07
    • 2015-01-11
    相关资源
    最近更新 更多