2016-08-17 5 views
3

Ich versuche, meine Django-Anwendung mit Supervisor zu implementieren. Wenn ich Supervisor starte, startet Daphne korrekt, die Worker-Server werden jedoch nicht gestartet.Django-Worker-Server mit Supervisor ausführen?

Hier ist ein Beispiel für den Code supervisor.conf (der Arbeiter-Block):

[program:runworker] 
command=python /home/django/environment/myproject/manage.py runworker 
stopsignal=KILL 
killasgroup=true 

Der Browser lange wartet, und es zeigt dann:

503 Service Unavailable 
Worker server failed to respond within time limit. 

ich auch hinzufügen könnte, wenn ich starten Sie die Prozesse unabhängig (kein Prozessleitsystem), es funktioniert tatsächlich. ich hinter einem Reverse-Proxy Nginx bin, aber ich glaube nicht, dass das Problem ist überhaupt ..

Hier ist der Ausgang des Betreuers:

2016-08-17 19:01:09,439 INFO supervisord started with pid 3473 
2016-08-17 19:01:10,441 INFO spawned: 'runworker' with pid 3477 
2016-08-17 19:01:10,442 INFO spawned: 'daphne' with pid 3478 
2016-08-17 19:01:11,421 DEBG 'daphne' stderr output: 
2016-08-17 23:01:11,421 INFO Starting server at 0.0.0.0:9000, channel layer myproject.asgi:channel_layer 

2016-08-17 19:01:11,519 INFO success: runworker entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 
2016-08-17 19:01:11,519 INFO success: daphne entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 
2016-08-17 19:01:11,591 DEBG 'runworker' stderr output: 
2016-08-17 23:01:11,591 - INFO - runworker - Running worker against channel layer default (asgi_redis.core.RedisChannelLayer) 

2016-08-17 19:01:11,592 DEBG 'runworker' stderr output: 
2016-08-17 23:01:11,592 - INFO - worker - Listening on channels http.request, websocket.connect, websocket.disconnect, websocket.receive 

Antwort

1

Sie wahrscheinlich die DJANGO_SETTINGS_MODULE Umgebungsvariable einstellen müssen.

Diese Antwort liefert ein Beispiel: https://stackoverflow.com/a/26732916/4193

+0

Dank Tim, dauert es nicht, obwohl arbeiten. Ich denke, dass es das richtige Einstellungsmodul verwendet, weil es eine Verbindung zum Redis-Backend herstellt, das für diese Umgebung definiert ist. –

0

Sie haben Zeitlimit zu erhöhen und Erhöhung der Kapazität Durchsatz von mehr als 100 Meldungen ein zweiter

CHANNEL_LAYERS = { 
     "default": { 
      "BACKEND": "asgi_redis.RedisChannelLayer", 
      "CONFIG": { 
       "hosts": [(XXX, XXX)], 
       "channel_capacity": { 
        "http.request": 200, 
        "websocket.send*": 20, 
       }, 
      }, 
      "ROUTING": "XXXXXchannel_routing" 
     }, 
    }