Как исправить внутреннюю маршрутизацию uWSGI? - PullRequest
0 голосов
/ 15 ноября 2018

Я внимательно слежу за обучением uWSGI по разгрузке WebSockets и SSE .Однако у меня проблема в том, что мой рабочий Django не может запуститься, так как uWSGI не может зарегистрировать маршрут.Он может зарегистрировать его, когда я заменяю сокет службы SSE просто вызовом журнала.Я действительно удостоверился, что сокет существует (я использую emperor для запуска обеих конфигураций uWSGI).

Я нашел этот другой вопрос StackOverflow , который предложил включить поддержку PCRE (который я ужесделал).Я больше не получаю предупреждения о поддержке PCRE в моем лог-файле.

Я пробую разные возможности в течение двух дней, и мне определенно нужна помощь кого-то со свежим умом.

Этомой журнал при запуске работника django (sse worker уже запущен):

/usr/sbin/uwsgi --ini /usr/uwsgi/vassals.d/01_django.ini --die-on-term --need-app --plugin router_redirect
[uWSGI] getting INI configuration from /usr/uwsgi/emperor.ini
[uWSGI] getting INI configuration from /usr/uwsgi/vassals.d/01_django.ini
unable to register route "equal:${CONTENT_TYPE};text/event-stream uwsgi:/tmp/sseapp.sock,0,0"
command terminated with exit code 1

это мой файл 01_django.ini:

[uwsgi]
socket = /tmp/django.sock
chown-socket = nginx:nginx
chmod-socket = 664

; wait until the sse app is loaded
wait-for-socket = /tmp/sseapp.sock

; configuring the sse app
; http-socket = :9090
offload-threads = 2
wsgi-file = /srv/okmapgo/okmapgo/wsgi.py
plugins = python

; collect X-Offload-to-SSE header and store it in var X_OFFLOAD
collect-header = X-Offload-to-SSE X_OFFLOAD
collect-header = Content-Type CONTENT_TYPE
; if X_OFFLOAD is defined, do not send the headers generated by Django
;; response-route-if-not = empty:${X_OFFLOAD} disableheaders:
; if X_OFFLOAD is defined, offload the request to the app running on /tmp/sseapp
; start the sseapp beforehand using
; uwsgi --wsgi-file /srv/okmapgo/dilcher_messaging_kafka/sseapp.py --socket /tmp/sseapp --gevent 1000 --gevent-monkey-patch
;; response-route-if-not = empty:${X_OFFLOAD} uwsgi:/tmp/sseapp,0,0
;response-route-if = equal:${CONTENT_TYPE};text/event-stream log:route triggered
response-route-if = equal:${CONTENT_TYPE};text/event-stream uwsgi:/tmp/sseapp.sock,0,0

Закомментированный ответ-rout-if "работает, текущая активная запись не существует: - /

Указанный сокет существует (другой сокет uwsgi является сокетом императора):

ls -lahrt /tmp
total 8
drwxr-xr-x    1 root     root        4.0K Nov 15 10:55 ..
srw-rw-r--    1 nginx    nginx          0 Nov 15 11:21 uwsgi.sock
srw-rw-r--    1 nginx    nginx          0 Nov 15 11:21 sseapp.sock
drwxrwxrwt    1 root     root        4.0K Nov 15 11:21 .

Я использую uWSGI версии 2.0.17.1.Любые советы / идеи о том, как заставить это работать?

1 Ответ

0 голосов
/ 19 ноября 2018

Я думаю, что вам нужно добавить router_uwsgi плагин в конфигурацию.

Uwsgi docs

...