2 votes

Besoin d'une solution de contournement pour faire une application autonome python sur AppFog

Après avoir lu sur le site d'appFog que je pouvais utiliser APScheduler pour créer un travailleur de fond en python, j'ai essayé. J'ai essayé de pousser une simple application python autonome avec un fichier requirements.txt (créé avec pip freeze ) qui contient les lignes suivantes :

APScheduler==2.0.3
MySQL-python==1.2.4b5

Mais en le poussant vers appFog, j'ai obtenu l'erreur suivante :

====> /logs/stderr.log <====
Traceback (most recent call last):
  File "testConnectionDB.py", line 3, in <module>
    from apscheduler.scheduler import Scheduler
ImportError: No module named apscheduler.scheduler

J'ai donc deviné que le requirements.txt Le fichier n'a pas été lu. Le support d'appFog a confirmé qu'il n'est effectivement pas encore supporté pour les applications autonomes, c'est-à-dire que les applications autonomes python ne peuvent pas importer de bibliothèques sur appfog, leur utilisation est donc très limitée.

Je me demandais donc si quelqu'un avait déjà fait cette expérience et si quelqu'un avait trouvé une solution de contournement. Je préférerais ne pas le faire en ruby ou passer à une autre plateforme. Existe-t-il un moyen de faire cela avec une application python ordinaire ou django-python ?

2voto

Rich H. Points 154

Avez-vous essayé de le lancer dans une application non autonome (par exemple en ajoutant une interface web comme CherryPy). Cela devrait vous permettre de compiler le fichier requirements.txt et vous sortir du problème des applications autonomes.

C'est de cette façon que je contourne la limitation dans les applications Ruby :)

0voto

cr8ivecodesmith Points 1801

UPDATE :

En fait, j'ai pu résoudre ce problème sans me résoudre à appeler mon script depuis une application web. Je pense que c'est une meilleure solution et une véritable solution autonome.

Il s'agit essentiellement de empaqueter votre script comme un exécutable et ensuite créer un lanceur python script pour appeler le binaire/exécutable produit.

Vous pouvez le lire en détail sur mon blog .


J'avais également le même problème. Je ne voulais pas me frayer un chemin dans une application web pour appeler mon script mais cela semblait être la meilleure solution.

J'ai réussi à le faire avec Flask et j'ai créé une route qui appellerait mon travailleur de fond script. Je n'ai pas utilisé APScheduler, juste le bon vieux os.system() et ça semblait assez stable.

J'en ai parlé en détail sur blog .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X