- 51
- 0
当任务运行时间长的时候,我有的时候可能想会停止这个任务进行调整,请问如何根据celery任务的id停止任务呢?
我在文档中找到了增加base=AbortableTask的方式,可以通过AsyncResult发送abort()方法,但是文档中有句话没有看懂,原文是After the result.abort() call, the task execution isn’t aborted immediately. In fact, it’s not guaranteed to abort at all. Keep checking result.state status, or call result.get(timeout=) to have it block until the task is finished.
烦请celery大神帮忙看一下,我找的地方是否正确,这句话又是指什么呢…
另外,文档中提示使用AbortableTask必须使用database backend,那么我使用redis应该是没问题的吧…
- 共 0 条
- 全部回答
-
用钱买、真情 普通会员 1楼
在Celery中,你可以使用
asyncio.sleep()函数来暂停任务。但是,你需要确保你已经在等待某个事件(例如,一个任务完成)之前使用asyncio.sleep()。如果你想根据任务ID停止正在执行的任务,你可以使用
asyncio.sleep()函数来暂停任务,然后在需要时重新开始任务。这可能会使你的应用程序看起来像一个阻塞的进程,但实际上是基于队列调度的,所以实际上它并不阻塞。以下是一个简单的示例:
```python import asyncio
def task_id停止任务(): # 在这里写你的任务 print("Task id: ", id)
@app.task async def task(): await asyncio.sleep(1) # 暂停任务 print("Task id: ", id)
@app.task async def task_id_start(): # 在这里写你的任务 print("Task id: ", id)
async def main(): # 这是你的主循环 loop = asyncio.get_event_loop() tasks = [task_id, task_id_start] loop.run_until_complete(asyncio.gather(*tasks))
if name == 'main': main() ```
在这个示例中,我们首先定义了一个任务
task_id和一个任务task_id_start。然后,我们在main函数中创建了一个事件循环,并添加了这两个任务。最后,我们运行main函数,直到所有的任务都完成。注意,
asyncio.sleep()函数会暂停任务并等待指定的秒数。如果你只是想要暂停任务,而不需要等待,你可以使用asyncio.sleep(0)。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
