Mono 定时 AI 任务为什么没有运行?
通过一次受控手动测试,排查 Mono 任务未执行、本地时间变化、设备可用性、步骤失败和通知问题。
定时任务看起来停了的时候,先问三个问题:它开始了吗?它完成了吗?你收到通知了吗?不同的答案对应不同的解决办法。
Mono 任务在你的设备上运行,而不是在一直开着的服务器上,而且手机系统可能会暂停后台应用。本文帮你在不产生重复操作的前提下,找出某次运行缺失的原因。Mono 还没有正式推出,你可以加入候补名单。
1. 先看运行记录
打开“任务”,查看该任务的“历史运行”。确认时间、成功还是失败,以及每一步的结果。通知固然有用,但运行记录更能说明实际发生了什么。
运行成功却没有通知,是通知的问题。运行失败,是任务本身的问题。完全没有运行记录,就要检查计划、设备或设置。
只会保留最近的运行记录,清除历史会把它们全部删掉。所以,如果通知打开的运行记录已经不存在,并不代表任务从未运行。如果任务会修改其他服务里的内容,也去那里看看。在弄清发生了什么之前,不要反复点“运行”。
2. 确认频率与本地时间
确认任务已开启,且计划不是“手动”。Mono 提供每小时、每天、工作日和每周的计划。要看实际的时间和日期,不要只看任务名称。
任务按设备的时钟运行。旅行或调整时钟之后,把计划和设备当前的日期、时间、星期几对照一下。
测试时,在能让应用保持打开的时候,选一个几分钟后的时间。如果今天的计划时间已过才创建任务,它不会为那个已经过去的时间补跑。测试前记下计划时间,这样能分辨是运行晚了,还是计划本身不同。
3. 了解设备可用性与补跑边界
任务在 Mono 于设备上运行时执行。如果 Mono 还在等你完成设备设置或关联,请先完成。
如果设备关机或 Mono 关闭期间错过了任务,下次打开应用时会补跑一次。它不会把错过的每个整点都补上,所以离线好几个小时,并不意味着有好几次运行在排队。
在 iPhone 和 iPad 上,系统可能给 Mono 一点后台时间,用来完成已经开始的工作,但不会无限期地启动新任务。如果某件事必须在准确的时间运行,即使你所有设备都关着,请使用专门为此设计的服务。
4. 做一次受控手动测试
用少量输入或无害的目标,点一次“运行”。检查各个步骤,以及 Mono 之外产生的任何影响。这样无需等到下一次计划时间,就能测试任务。
| 观察结果 | 下一步检查 |
|---|---|
| 手动运行也失败 | 输入、账户登录、网络及失败步骤 |
| 手动成功,计划运行缺失 | 任务是否开启、计划、本地时间及设备可用性 |
| 运行成功,没有通知 | Mono 任务通知设置及系统权限 |
| 输出出现两次 | 重试前先检查运行记录和目标服务 |
手动运行也算一次运行。如果你在今天的计划时间过后手动运行,Mono 会把今天这次视为已完成。请留意下一次计划时间,不要指望测试之后马上再运行一次。
5. 修复失败步骤后再重试
失败的运行同样算一次运行,所以在下一次计划时间之前,Mono 不会自动重试。根据步骤结果修复具体问题,然后有意识地再试一次。
比如,账户连接过期需要重新登录,改计划解决不了。输入可能为空时,要事先想好为空时怎么处理。需要联网的步骤,要求相应服务可以访问。
如果任务有多个步骤,一步失败不会让其他步骤停下,后面的失败也不会撤销前面已完成的步骤。重试一个可能会再创建内容的任务之前,先到目标服务里看看是否已经创建过。
6. 确认下一次计划执行的结果
手动测试成功后,让任务保持开启,并在应用可用的情况下观察下一次计划运行。把它的时间和输出与手动测试对比。
如果运行得太早或运行了两次,先关闭任务并检查目标服务,再重试。
需要帮助时,记下任务的计划、设备时区、应用当时是否打开、运行时间和失败步骤。去掉私人输入和密码。可以用可靠自动化指南简化不稳定的任务,或在重新安排之前先检查刚创建的任务。
