我已经用Python编写了一个小型后端应用程序(在Google App Engine上运行),以作为自定义的远程调度程序,用于我在不同应用程序中使用的几个Google Cloud Functions。通常,函数会要求后端安排具有给定有效负载的回调。一切正常,除了以下事实之外:在后端应用程序上,负责回调我的Cloud Functions的线程通常在几个小时后死亡:https://imgur.com/a/8ulENjf
不用说我不是joining
线程。
我已经阅读了使用Python的UNIX服务器发出的Python SIGINT信号,但是我首先需要排除更多简单的选项。以下代码的相关部分:
import time
from datetime import datetime, timedelta
import sched
from threading import Thread
scheduler = sched.scheduler(time.time, time.sleep)
scheduler.enterabs(schedTime, 1, callback, kwargs=payload)
t.thread = Thread(target=scheduler.run) #dispatching scheduler main function to thread
t.start()
[我会说该实例由于以下几种原因之一而被杀死,这些都在here中列出,因此很可能在几个小时后其中一个语句完成后,我猜这两个原因:
[您还应考虑App Engine将尝试使实例无限期运行,但是在某些时候,实例将被终止并重新启动。
您可以通过使用scaling elements进入App Engine app.yaml文件来控制App Engine应用程序的缩放。例如,您可以将max_instances和min_instances设置为1,以确保始终有一个实例在运行。或使用手动缩放来设置静态实例数。