S'il vous plaît informez-moi si je peux accomplir cela en utilisant Google App Engine.
Sûr! Par exemple, en Python, urlfetch
(avec l'URL comme argument) pour obtenir le contenu, puis un simple re.search(r'Value=(\d+)').group(1)
(si le contenu est aussi simple que vous le montrez) pour obtenir la valeur, et un db.put
pour le stocker. Voulez-vous que les détails de Python soient épelés, ou préférez-vous Java?
Modifier: urllib/urllib2 serait également réalisable (GAE les supporte maintenant).
Alors cron.yaml
devrait être quelque chose comme:
cron:
- description: refresh "value"
url: /refvalue
schedule: every 6 hours
et app.yaml
quelque chose comme:
application: valueref
version: 1
runtime: python
api_version: 1
handlers:
- url: /refvalue
script: refvalue.py
login: admin
Vous avez sans doute d'autres entrées dans l'une ou les deux, bien sûr, mais c'est le sous-ensemble nécessaire pour "rafraîchir la valeur". Une possible refvalue.py
peut-être:
import re
import wsgiref.handlers
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.api import urlfetch
class Value(db.Model):
thevalue = db.IntegerProperty()
when = db.DateTimeProperty(auto_now_add=True)
class RefValueHandler(webapp.RequestHandler):
def get(self):
resp = urlfetch.fetch('http://whatever.example.com')
mo = re.match(r'Value=(\d+)', resp.content)
if mo:
val = int(mo.group(1))
else:
val = None
valobj = Value(thevalue=val)
valobj.put()
def main():
application = webapp.WSGIApplication(
[('/refvalue', RefValueHandler),], debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
Selon ce que le reste de votre application web est en train de faire, vous aurez probablement envie de déplacer le class Value
dans un fichier séparé (par exemple models.py
avec d'autres modèles) qui bien sûr vous aurez alors avoir à importer (à partir de ce fichier .py
et d'autres qui font quelque chose d'intéressant avec toutes vos valeurs sauvegardées). Ici, j'ai pris en compte certaines anomalies possibles (pas de Value=
trouvé sur la page cible) mais pas d'autres (le serveur de la page cible ne répond pas ou donne une erreur); il est difficile de savoir exactement quelles anomalies vous devez considérer et ce que vous voulez faire si elles se produisent (ce que je fais ici est très simplement l'enregistrement None
comme la valeur à l'heure de l'anomalie, mais vous voudrez peut-être faire plus ... ou moins - je vous laisse le soin de le faire! -)
Je suis intéressé par la version Python, merci! J'essayais d'utiliser urllib2, httplib2. SO urlfetch est le chemin à parcourir, n'est-ce pas? Le contenu est vraiment simple. Variables uniques contenant des valeurs dynamiques Valeur = 29 Temps = 128769 a = 39 b = 129 c = 9 d = 12 e = 29 f = 659 g = 279 h = 5769 i = 43 k = 128 j = 29 l = 769 m = 29 n = 187 Donc, les importations doivent être re et la bibliothèque urlfetch, n'est-ce pas? Je suis tellement désolé, je suis un débutant Python, je souhaite Google App moteur pris en charge plus de langues ou mieux encore un accès au terminal Linux! – ThinkCode
@NJTechGuy, GAE supporte Java (et indirectement à travers de nombreuses langues qui peuvent être implémentées sur Java, comme JRuby, Scala, Groovy, Clojure - voir http://groups.google.com/group/google- appengine-java/web/moteur de jeu-dans-l'application pour une liste de plus de 8 langues connues pour fonctionner sur App Engine ... êtes-vous * en train de dire * sérieusement que ces langues RTE-plus ne suffisent pas? et cela vous limite vraiment?! -). Aucune idée de ce que signifie "l'accès au terminal Linux" dans ce contexte. Quoi qu'il en soit, édité la réponse pour inclure une solution complète. –
Oh mon dieu Alex! Tu es un génie! Donc, beaucoup de forums détestent aider les débutants. Vous m'avez fourni une solution complète! Je n'ai pas encore testé, mais je suis sûr que ça va marcher :) Je n'ai jamais aimé Java :(C# préféré à l'époque, on dirait que je dois gagner du terrain sur Java, continue d'en entendre parler! J'adorerais PERL compatibilité sur GAE Je suis un peu nouveau dans le monde open source, je l'adore déjà! Avec des sites comme ceux-ci, je devrais être au top en un rien de temps! Merci beaucoup :) – ThinkCode