Closed zzzjw666 closed 6 months ago
XXL-JOB-ADMIN界面上点击停止就行了,pyxxl会接收到停止信号的然后尝试中断任务
如果同步方法定义的任务,由于是线程池执行,不支持强制中断,需要你在代码中获取中断信号后自行停止
from pyxxl.ctx import g
...
@app.register(name="sync_func")
def test_task4():
# 如果同步任务里面有循环,为了支持cancel操作,通过判断g.cancel_event信号.
while not g.cancel_event.is_set():
... # 列如time.sleep(2)
return "成功"
如果你的代码逻辑类似于如下,中间没有其他过程目前是无法中断的
@app.register(name="sync_func")
def test_task4():
time.sleep(600)
return "成功"
异步方法可以正常中断(里面所有的调用都要异步化)
@app.register
async def test_task4():
await asyncio.sleep(600)
return "成功"
就是不想在XXL-JOB-ADMIN界面上点击停止,而是想通过代码动态的去中断任务,pyxxl这个库现在有实现这个功能吗
不是很理解你的意思
是指额外有个程序A去调用pyxxl-Executor程序来关闭指定任务? 还是说在pyxxl-Executor程序里面满足某个条件之后关闭指定任务?
你也可以理解为你所说的,有个程序A去调用pyxxl-Executor程序来关闭指定任务
@zzzjw666 前提是需要知道jobid,可以调pyxxl-Executor http的这个接口 https://github.com/fcfangcc/pyxxl/blob/e40deaa7d7541dcfaa87dc3d2caf8b46a49f4df2/pyxxl/server.py#L66-L70
其他没有相关功能
好的,明白~
Problem description
详细描述你的问题 作者您好,现在我遇到一个问题,就是想在代码里面对任务进行停止,但是我看了一下pyxxl的文档,好像没有写对任务停止调用哪个函数或者方法
Steps to reproduce the problem
Specifications like the version of the project, operating system, or hardware