Je suis à la recherche d'un bon samaritain qui puisse me fournir un squelette très basique pour exécuter un script python en utilisant Google App Engine. J'ai lu la documentation, vérifié les questions relatives à SO mais je suis perdu avec le format WebApp. Tout ce que je veux faire, c'est exécuter un script python qui accepte des arguments ou plusieurs script python, 6 fois par semaine pour écouter les changements dans un site web et les poster ensuite sur Firestore.
Je comprends le format cron et la plupart des fichiers de configuration. Je suis bloqué sur la façon d'arranger mes fichiers pour le projet, et sur le fonctionnement des url.
Tout ce que je demande, c'est un exemple très basique sur la façon d'exécuter efficacement les scripts. Le présent est de loin la meilleure ressource que j'ai trouvée, mais je n'arrive pas à comprendre ce qui se passe avec ce code provenant de ce site :
`#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
import feedparser
import time
class Item(db.Model):
title = db.StringProperty(required=False)
link = db.StringProperty(required=False)
date = db.StringProperty(required=False) class Scrawler(webapp.RequestHandler):
def get(self):
self.read_feed()
self.response.out.write(self.print_items())
def read_feed(self):
feeds = feedparser.parse( "http://www.techrepublic.com/search?t=14&o=1&mode=rss" )
for feed in feeds[ "items" ]:
query = Item.gql("WHERE link = :1", feed[ "link" ])
if(query.count() == 0):
item = Item()
item.title = feed[ "title" ]
item.link = feed[ "link" ]
item.date = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time()))
item.put()
def print_items(self):
s = "All items:<br>"
for item in Item.all():
s += item.date + " - <a href='" + item.link + "'>" + item.title + "</a><br>"
return s application = webapp.WSGIApplication([('/', Scrawler)], debug=True) def main():
run_wsgi_app(application) if __name__ == "__main__":
main() `
Voici le script python script que j'ai essayé d'exécuter à des fins de test uniquement, en utilisant python3.7 :
import sys
from datetime import datetime
import firebase_admin
from firebase_admin import firestore
app = firebase_admin.initialize_app()
db = firestore.client()
def hello_firestore(user_name):
db.collection('firestore_test').document('test').set({
'time': str(datetime.now()),
'user_name': user_name
})
if __name__ == "__main__":
try:
user_name = sys.argv[1]
except:
print('Error with the argument', file=sys.stderr)
try:
hello_firestore(user_name)
except:
print('Error accessing the database', file=sys.stderr)
sys.exit(0)
D'après ce que j'ai compris, je dois utiliser Flask ou quelque chose de similaire pour que cela fonctionne, mais je ne comprends pas vraiment comment cela fonctionne, tout ce que je demande, c'est un petit échantillon et une brève explication, et à partir de là, j'ajouterai deux et deux.
Meilleures salutations