【问题标题】:Django: WSGI, slow when running apps.populate, only runs occasionallyDjango:WSGI,运行apps.populate时很慢,只是偶尔运行
【发布时间】:2017-04-25 21:07:00
【问题描述】:

我有一个在 Apache2 和 WSGI 上运行的 django 应用程序。我使用 PyCharm 作为我的 IDE 进行开发。

我有下面的wsgi python模块,并在application = get_wsgi_application()之后添加了一个打印语句。查看日志时,此过程大约需要 1 秒。令人困惑的是,当它被触发时。我有一个发送简单文本输出的页面。我刷新了很多次,这个打印被写入日志一次。如果我等待几秒钟,它会被写入下一页请求。如果我连续刷新,直到我再次等待一段时间。

我的调用和响应大约需要 10 毫秒,但是当它执行时(由日志中的打印验证)大约需要一秒钟。这给我的服务器增加了大量不必要的负载并减慢了速度。我把它缩小到在django.setup() 方法中调用的apps.populate(settings.INSTALLED_APPS)。有什么方法可以防止它经常运行或让它运行得更快?

感谢您提供任何指导或建议以解决或防止它。

wsgi.py:

import datetime
import os
import sys
from django.core.wsgi import get_wsgi_application

root_path = os.path.abspath(os.path.split(__file__)[0])
sys.path.insert(0, os.path.join(root_path, 'project_name'))
sys.path.insert(0, root_path)

path = '/var/www/project'
if path not in sys.path:
    sys.path.append(path)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')

start = datetime.datetime.now()
application = get_wsgi_application()
print('Time to Populate: ' + str(datetime.datetime.now() - start))

settings.INSTALLED_APPS:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.admin',
    'report_builder',  # Third-party tool
    'business',  # Internal app
    'slab',  # Internal app
    'file',  # Internal app
    'training_topic',  # Internal app
    'item',  # Internal app
    'person',  # Internal app
    'employee',  # Internal app
    'school',  # Internal app
    'training',  # Internal app
    'services',  # Internal app
    'incident',  # Internal app
    'report',  # Internal app
    'notice',  # Internal app
    'county_notification',  # Internal app
    'utilities.fax',  # Internal app
    'log',  # Internal app
    'helptext',  # Internal app
    'search',  # Internal app
    'compensation',  # Internal app
    'data_export',  # Internal app
    'record_review',  # Internal app
)

/var/log/apache2/error.log:

[Tue Apr 25 14:07:22.917665 2017] [wsgi:error] [pid 21810] Time to Populate: 0:00:00.826958
[Tue Apr 25 14:07:34.715745 2017] [wsgi:error] [pid 21817] Time to Populate: 0:00:00.822580

【问题讨论】:

    标签: django apache2 pycharm wsgi


    【解决方案1】:

    我使用的是 PyCharm IDE,它实时保存文件,每次保存都会提示重新编译,并且会显示此日志。我关闭它并重新运行测试,一切都很好。它只在我重新加载 Apache2 时记录此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多