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