我在Apache2和WSGI上运行了一个django应用程序。我使用PyCharm作为开发的IDE。
我有下面的wsgi python模块,并在application = get_wsgi_application()
之后添加了一个print语句。观看日志时,此过程大约需要1秒钟。令人困惑的是,当它被触发时。我有一个发送简单文本输出的页面。我点击了很多次刷新,这个打印被写入日志一次。如果我等待几秒钟,它将写入下一页请求。如果我连续刷新,直到我再等一段时间才会这样。
我的呼叫和响应大约是10毫秒,但是当执行此操作时(由日志中的打印验证),它需要大约一秒钟。这会给我的服务器增加大量不必要的负载并减慢速度。我把它缩小到apps.populate(settings.INSTALLED_APPS)
方法中调用的django.setup()
。有没有办法可以防止它经常运行或者让它运行得更快?
感谢您提供的任何指导或建议,以便明白或预防。
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
答案 0 :(得分:0)
我正在使用PyCharm IDE,它实时保存文件,每次保存都会提示重新编译,这个日志会显示出来。我关闭它并重新测试,一切都很好。它只在我重新加载Apache2时记录这个函数。