8
votes

Exécuter Django sur plusieurs ports

Quelqu'un pourrait-il me dire comment je peux exécuter Django sur deux ports simultanément? La configuration Django par défaut n'écoute que sur le port 8000. J'aimerais également exécuter une autre instance sur Port XXXX. J'aimerais rediriger toutes les demandes de ce deuxième port à une application particulière dans mon application Django.

Je dois y accomplir avec l'installation Django par défaut et non à l'aide d'un serveur Web comme Nginx, Apache, etc.

merci


Disons que je suis deux applications dans mon application Django. Maintenant, je ne veux pas dire deux applications Django distinctes, mais les dossiers séparés dans le répertoire "App '". Appelons ce app1 et app2

Je veux que toutes les demandes sur le port 8000 accélèrent sur app1 et toutes les demandes de port xxxx pour accéder à app2

hth.


0 commentaires

3 Réponses :


18
votes

Il suffit d'exécuter deux instances de ./ manage.py runserver . Vous pouvez définir un port en le spécifiant directement directement: ./ manage.py runserver 8002 Pour écouter le port 8002.

edit Je ne comprends pas vraiment pourquoi vous voulez faire cela. Si vous souhaitez que deux serveurs servant différentes parties de votre site, vous avez en vigueur deux sites, ce qui aura besoin de deux paramètres distincts Params.py et urls.py fichiers. Vous exécuteriez alors une instance de runserver avec chacun, passant le drapeau des paramètres de manière appropriée: ./ manage.py runserver 8002 --Settings = app1.Settings


1 commentaires

Bonne idée. Mais cela ne résoudrait pas tout à fait mon problème. J'aurais dû être plus explicite. Je vais faire une édition.



2
votes

Le serveur Web intégré est destiné au développement uniquement. Vous devez donc vraiment utiliser Apache ou similaire dans une situation où vous devez exécuter plusieurs ports.

D'autre part, vous devriez pouvoir démarrer plusieurs serveurs simplement en démarrant plusieurs instances de runserver . Tant que vous utilisez un serveur de base de données séparé, je ne pense pas que cela aura des problèmes supplémentaires.


0 commentaires

6
votes

Une autre chose à considérer - Django's Session Stuff utilisera le même cookie de session pour chaque site, et comme Les cookies ne sont pas spécifiques au port , vous aurez des problèmes avec la déconnexion de chaque fois que vous basculez entre Windows, à moins que vous n'utilisiez plusieurs sessions de navigateur / navigation privée pendant le développement.

Bien que ce soit ce que vous devez faire lorsque vous devez vous connecter à 2 utilisateurs différents sur le même site, connectez-vous à 2 sites différents sur Django sur différents ports localhost ne doivent pas nécessairement fonctionner comme ceci.

Une solution facile consiste à écrire un middleware simple pour résoudre ce problème en ajoutant le numéro de port sur le nom de la variable utilisé pour stocker votre identifiant de session. Voici celui que j'utilise .


2 commentaires

Je me demande si cela résoudra mon problème. Je passe plusieurs conteneurs Docker sur une instance, Django s'exécute sur plusieurs ports hôtes. Lorsque je me connecte, si la réponse est servie à partir d'un autre conteneur, elle répond avec Connexion à nouveau car son inconorciation je viens d'authentifier avec un autre serveur et que cela ne peut donc pas récupérer la session.


Merci! J'ai eu ce problème et je pensais que c'était la nouvelle version de Firefox!