如何在UWSGI应用程序的ini配置中测试python eval语句?

时间:2014-01-10 18:01:57

标签: django uwsgi newrelic

据我所知,USWGI应用程序配置中的eval语句无法正常/执行,但我无法弄清楚如何测试它。

  • 操作系统: Debian GNU / Linux 7.1(wheezy)
  • UWSGI: 1.2.3-debian
  • Python: 2.7

我实际上尝试使用app.ini文件中的以下内容设置Newrelic的应用程序监控(使用application mounting method作为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 conf:

log_file = /tmp/newrelic-python-agent.log

重新启动并向应用程序发出一些请求(按照常规启动并运行)后,甚至没有创建newrelic log_file,并且 uwsgi app log django log ,所以我不知道如何判断eval中发生了什么。

我已经尝试在eval中直接输入不正确的语法,但uwsgi仍然成功重启。

有没有办法验证uwsgi进程执行的eval语句中的内容?

2 个答案:

答案 0 :(得分:1)

我迟到了,但你的问题是你有wsgi-file选项让eval无效。 (同样适用于module选项 - 这就是我的情况。)

因此,要使uWSGI使用中间件包装任何WSGI应用程序,您只需删除有问题的选项。即:

; 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)

答案 1 :(得分:-1)

听起来这里有很多事情发生。您可能希望在

处打开带有newrelic的票证

https://support.newrelic.com这样他们就可以调查您的设置中发生了什么。