如何保持python服务器在线程上运行计划任务的活动状态?

问题描述 投票:0回答:1

我已经用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()
python-3.x google-app-engine google-cloud-platform job-scheduling
1个回答
0
投票

[我会说该实例由于以下几种原因之一而被杀死,这些都在here中列出,因此很可能在几个小时后其中一个语句完成后,我猜这两个原因:

  • 您的应用程序用完实例小时配额。
  • 该实例超出其配置的instance_class的最大内存。

[您还应考虑App Engine将尝试使实例无限期运行,但是在某些时候,实例将被终止并重新启动。

您可以通过使用scaling elements进入App Engine app.yaml文件来控制App Engine应用程序的缩放。例如,您可以将max_instances和min_instances设置为1,以确保始终有一个实例在运行。或使用手动缩放来设置静态实例数。

© www.soinside.com 2019 - 2024. All rights reserved.