如何在 UWSGI 应用程序的 ini 配置中测试 python eval 语句?
题
据我所知,我在 USWGI 的应用程序配置中的 eval 语句无法工作/执行,但我不知道如何测试它。
- 操作系统: Debian GNU/Linux 7.1(喘息)
- UWSGI: 1.2.3-debian
- Python: 2.7
我实际上正在尝试使用我的以下内容设置 Newrelic 的应用程序监控 app.ini
文件(使用 应用安装方法 对于 Django 应用程序):
[uwsgi]
chdir = /home/app-user/myapp/bin
wsgi-file = django.wsgi
socket = 127.0.0.1:3031
pythonpath = /home/app-user/myapp/src
logto = /var/log/uwsgi/app/myapp.log
enable-threads = true
single-interpreter = true
eval = import newrelic.agent, django.wsgi; newrelic.agent.initialize('/path/to/newrelic.ini'); application = newrelic.agent.wsgi_application()(django.wsgi.application)
我的 newrelic.ini
会议:
log_file = /tmp/newrelic-python-agent.log
重新启动并向应用程序发出一些请求(按正常方式启动并运行)后,甚至没有创建 newrelic log_file,并且文件中没有任何内容 uwsgi应用程序日志 或者 Django日志, ,所以我不知道如何判断评估中发生了什么。
我尝试在 eval 中放入完全语法错误的内容,但 uwsgi 仍然成功重新启动。
有没有办法验证 uwsgi 进程执行的 eval 语句中的内容?
解决方案
我参加聚会迟到了,但你的问题是你 wsgi-file
选项使得 eval
无用。(同样适用于 module
选项 - 这就是我的情况。)
因此,要使 uWSGI 使用中间件包装任何 WSGI 应用程序,您只需删除有问题的选项即可。IE。:
; DON'T USE THIS: wsgi-file=myproject/wsgi.py
; NEITHER THIS: module=myproject.wsgi
eval=import myproject.wsgi, myfancymw; application = myfancymw.wrap(myproject.wsgi.application)
其他提示
听起来在这里有很多事情。您可能希望在
中使用Newrelic开票https://support.newrelic.com 所以他们可以调查设置中发生的情况。
不隶属于 StackOverflow