据我所知,我在 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 所以他们可以调查设置中发生的情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top