2010-09-23 6 views
0

Je suis nouveau dans le monde du développement des affaires informatiques (sérieuses) mais je pense à une idée d'entreprise et j'essaie toujours de voir comment l'infrastructure globale devrait fonctionner.Can Django utilise des scripts python "externes" liés à d'autres bibliothèques (NumPy, RPy2 ...)

J'ai fait quelques recherches pour une bonne technologie pour livrer la solution. Je suis très enclin à utiliser Python, MySql, Django (Apache) côté serveur et RIA côté client (probablement Flex) car j'ai besoin de capacités de visualisation avancées (surtout après avoir vu le projet FLARE). L'application nécessite un certain "soulèvement de la houle" du côté numérique/statistique et l'intégration de R avec Python (RPy2) + d'autres comme NumPy semble être idéale.

La chose que je ne peux pas à ce jour (certainement parce que je suis un débutant) est le suivant:

Can Django (d'une façon ou l'autre) exécuter un script/programme python (externe) qui contiennent référence à la bibliothèques supplémentaires (NumPy ...)? Ex: utilisateur déclenche une action pour effectuer une analyse statistique, Django reçoit la requête et doit exécuter du code python (en utilisant R, NumPy ...) qui utilise les données dans la base de données et stocke les résultats dans la base de données . Django accède aux données de la base de données et les renvoie à l'application cliente à afficher.

Est-ce la bonne logique ou suis-je complètement hors de la voie?

Merci d'avance pour votre expertise.

Répondre

1

Si vous pouvez l'installer sur le serveur et l'importer en python, vous pouvez l'utiliser en python et donc Django.

C'est-à-dire si

import foo 

travaux, puis le fait

import foo 

foo.bar(fobaz) 

en supposant que cela fonctionnerait sans Django. De plus, si vous deviez faire quelque chose qui envoie des en-têtes ou des réponses HTTP en dehors de Django, vous risquez de rencontrer des problèmes, mais les paquets numériques ne feront rien de tel.

5

Django est un programme Python. Et comme tout autre programme Python, il pourra accéder à d'autres scripts/modules Python. La question alors, est de savoir comment exécuter le script. Si votre script définit explicitement une fonction main (ou un autre point de départ), vous pouvez simplement l'importer comme vous le feriez avec un module et appeler le main.

Par exemple:

# my custom script. Located in my_script.py 
# lots of functions 

def main(): 
    # call functions in sequence. 

# my django view. 
from myscript import main as script_main 
script_main() 

Si vous préférez exécuter comme si de la ligne de commande puis regardez le module subprocess. Si vous voulez l'exécuter de manière asynchrone, alors quelque chose comme Celery pourrait être ce que vous cherchez.

Questions connexes