# 客户撤销授权了,排队的 AI 任务还没执行。 | EasyNet Source: https://easynet.run/cases/problems/recheck-permission-after-queue [easynet.run · 全部问题场景](https://easynet.run/cases#problem-scenarios) # 客户撤销授权了,排队的 AI 任务还没执行。 客户昨晚同意处理一批文件,任务排着队没开始。今天客户撤回许可,界面显示撤销成功;到了下午,工作进程拿着昨天保存的批准继续读文件。授权状态已经变了,执行却仍活在提交任务的那个时刻。 这类问题应先在现有任务系统处理。它若已经在读取前检查当前权限,就保留这套控制。只有当任务跨服务等待、继续派生新的工作时,才需要进一步核对每个真正接触资源的入口是否都看到了变化。 通过 EasyNet 接入受控处理函数,可以在调用进入时检查身份和访问条件。但队列保存的应是任务请求与授权依据,而不是一张永远有效的通行证。出队后,处理程序仍需在读取文件之前查当前许可,失效就结束任务,并说明没有执行。 例如,文件分析任务保存客户、文件范围、用途和授权版本。客户撤回后,尚未开始的项进入拒绝状态;已经开始的项则要区分读到了哪里,能否停止后续步骤。旧的批准记录可以留作解释请求来历,不能继续充当当前授权。 这需要队列与业务授权系统接通,也需要处理程序在适当位置响应停止。下游若再次读取资源,应重新检查,而非因为上游曾经获准就继续。外部请求已经发出但无法取消时,应如实显示这部分仍在途,不能把取消按钮变成一个虚假的保证。 测试时先暂停工作进程、提交任务、撤销许可,再恢复执行,确认没有读到文件。随后测试执行中撤销,分别记录已发生与成功阻止的部分。客户需要知道的是撤销到底改变了什么;它可以阻止新的访问,却不能让已经交出的副本从外部系统自动消失。 01 任务进入队列 保存范围、用途与原始授权依据。 02 客户撤回许可 业务授权系统更新当前状态。 03 读取前拒绝 出队重新检查,不沿用旧批准。 排队保存请求,读取前确认当前许可。 在读取动作前检查当前状态 单进程顺序示例,真实并发撤销需业务系统的原子检查或合适同步。 本地示例 · python ``` current_permission = {'active': False} reads = [] def process(job): if not current_permission['active']: return 'denied_before_read' reads.append(job['file']) return 'read' print(process({'file': 'customer-demo.csv'})) print('read count:', len(reads)) ``` 预期结果:denied_before_read且read count为0,旧排队状态不授权读取。 接入时的检查项 撤销后出队任务不会读取受控资源。 派生任务重新访问时同样检查权限。 状态区分未执行拒绝与已经发生的处理。 源码与接入资料 [设备接入指南](https://easynet.run/docs/connect/runtime) [函数接入指南](https://easynet.run/docs/connect/function)