gpt4 book ai didi

python-3.x - 在 Google App Engine 上按计划运行 python 脚本

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:50 26 4
gpt4 key购买 nike

我正在寻找一个可以提供非常基本的框架以使用 Google App Engine 运行 python 脚本的好心人。我已经阅读了文档,检查了相关的 SO 问题,但我对 WebApp 格式一无所知。我想要做的就是运行一个接受参数的 python 脚本或多个 python 脚本,每周 6 次以监听网站中的更改,然后将它们发布到 Firestore。

我了解 cron 格式和大部分配置文件。我一直纠结于如何为项目安排我的文件,以及 url 的工作方式。

我要问的只是一个关于如何有效运行 python 脚本的非常基本的示例。 This是迄今为止我找到的最好的资源,但我无法真正理解该站点的这段代码发生了什么:

`#!/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() `

这是我尝试运行的 python 脚本,仅用于测试,使用 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)

据我所知,我必须使用 Flask 或类似的东西才能让它工作,但我并不真正了解它是如何工作的,我所要求的只是一个小样本和简短的解释,然后我从那里开始我将加二加二。

最好的问候

最佳答案

我的 children 终于会再次爱我了。原来我看错了 GCP 资源,正如@Dan_Cornilescu 指出的那样,这可能是一种方法,但最简单的方法是将“Cloud Functions”与“Cloud Scheduler”结合使用,我发现它只是通过纯属偶然。

This文章是第一个提到它的,现在我把它传递了,因为作者再次使用网络应用程序来说明案例,出于我的需要和缺乏技术术语,我无法挖掘它。但在您的 Google Cloud Console 中,它确实像预期的那样简单:

  1. 转到功能部分
  2. 选择“Cloud Pub/Sub”作为触发器
  3. 添加/选择主题
  4. 选择你的运行时(当然是Python3.7)
  5. 选择要执行的函数
  6. 创建
  7. 确保在下一个选项卡上填写“requirements.txt”文件
  8. 转到 GCP 的 Cloud Scheduler 部分并创建一个作业(cron 作业)
  9. 选择目标:“发布/订阅”
  10. 输入您为事件选择的主题
  11. 如果你想为你的函数发送参数,使用负载 为此目的。

要为您的 Python 函数使用一个或多个参数,您需要使用负载并使用其初始函数中的以下内容:

pubsub_message = base64.b64decode(event['data']).decode('utf-8')

您可以将此 pubsub_message 用作 python 函数的参数。

这就是所有人,简单, super 简单,最后我认为与没有可视化页面的 GAE 一样,正是我所需要的,我知道一定有更好的方法。

编辑:我在这里提到的文章描述了如何使用 gcloud 直接从您的计算机上传您的函数。

enter image description here

关于python-3.x - 在 Google App Engine 上按计划运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54245384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com