Как протестировать оператор Python eval в конфигурации ini приложения UWSGI?


Насколько я могу судить, мой оператор eval в конфигурации приложения USWGI не работает/не выполняется, но я не могу понять, как это проверить.

  • ОС в Debian 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 conf:

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

После перезагрузки и выполнения некоторых запросов к приложению (которое работает как обычно) newrelic log_file даже не создается, и нет ничего в uwsgi app log или django log, поэтому я не знаю, как сказать, что происходит в eval.

Я пробовал выкладывать прямо синтаксически некорректные вещи в eval, но uwsgi все равно успешно перезапускается.

Есть ли способ проверить, что в инструкции eval выполняется с помощью процесса uwsgi?

2 2

2 ответа:

Я опоздал на вечеринку, но ваша проблема заключалась в том, что у вас был 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)

Похоже, здесь много чего происходит. Вы можете открыть билет с newrelic по адресу

Https://support.newrelic.com таким образом, они могут исследовать, что происходит в вашей установке.