如何让 python 服务器在线程上为 运行 计划任务保持活动状态?
How to keep a python server alive for running scheduled tasks on threads?
我在 Python(运行 on Google App Engine)中编写了一个小型后端应用程序,作为一对 Google 我在不同应用程序中使用的云功能。通常,函数会要求后端使用给定的有效负载安排回调。一切都很好,除了在后端应用程序上,负责回调我的 Cloud Functions 的线程通常会在几个小时后死亡:https://imgur.com/a/8ulENjf
不用说我不是joining
线程。
我已经阅读了 UNIX 服务器使用 Python 发出的 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,因此很可能在几个小时后这些陈述之一得到满足,我猜这两个:
- 您的应用程序用完了实例小时配额。
- 实例超出了其配置的最大内存instance_class。
您还应该考虑到 App Engine 会尝试无限期地保留您的实例 运行,但在某些时候实例将被终止并重新启动。
您可以通过在 App Engine app.yaml 文件中使用 scaling elements 来控制 App Engine 应用程序的缩放。例如,您可以将 max_instances 和 min_instances 设置为 1,以确保始终有一个实例 运行。或使用手动缩放设置实例的静态数量。
我在 Python(运行 on Google App Engine)中编写了一个小型后端应用程序,作为一对 Google 我在不同应用程序中使用的云功能。通常,函数会要求后端使用给定的有效负载安排回调。一切都很好,除了在后端应用程序上,负责回调我的 Cloud Functions 的线程通常会在几个小时后死亡:https://imgur.com/a/8ulENjf
不用说我不是joining
线程。
我已经阅读了 UNIX 服务器使用 Python 发出的 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,因此很可能在几个小时后这些陈述之一得到满足,我猜这两个:
- 您的应用程序用完了实例小时配额。
- 实例超出了其配置的最大内存instance_class。
您还应该考虑到 App Engine 会尝试无限期地保留您的实例 运行,但在某些时候实例将被终止并重新启动。
您可以通过在 App Engine app.yaml 文件中使用 scaling elements 来控制 App Engine 应用程序的缩放。例如,您可以将 max_instances 和 min_instances 设置为 1,以确保始终有一个实例 运行。或使用手动缩放设置实例的静态数量。