首页 > 解决方案 > 在 Python3 中如何关闭使用 asynckivy 开始的任务

问题描述

在下面的代码中,一旦async scraper(self)函数启动,它将永远异步运行,直到满足中断条件。

如何使用过早地终止/中止此功能asynckivy

from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
import asynckivy as ak

class MyBotLayout(TabbedPanel):

    def pressStart(self):
        self.bot_start.disabled = True
        self.spider_status.text = "Running"
        
        # How to kill this async function below?
        async def scraper(self):
            while 1:
                # do something until break
                if break_condition_met:
                    break
        ak.start(scraper(self))



class MyBotApp(App):
    def build(self):
        return MyBotLayout()

MyBotApp().run()

标签: python-3.xkivykivy-languagekivymd

解决方案


这不在文档中,但在 site_packages 中找到。解决方案是:

# assign a variable to the Task
my_task = ak.start(scraper(self))

然后通过调用中止它:

my_task.cancel()

推荐阅读