python-3.x - 在 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()
解决方案
这不在文档中,但在 site_packages 中找到。解决方案是:
# assign a variable to the Task
my_task = ak.start(scraper(self))
然后通过调用中止它:
my_task.cancel()
推荐阅读
- java - 使用 sqlite-jdbc-crypt 保护现有的 sqlite 数据库会引发 sqlite 错误或缺少数据库(不支持的文件格式)
- php - 并排的桌子
- node.js - Typescript 两个功能兼容的泛型
- javascript - 使用 Javascript RegExp 的自定义 URL 验证
- python - 重复符号后解析一个单词
- python - 在python中使用OAuth2Session下载图像不起作用
- amazon-web-services - 更新 Cloudformation 堆栈名称
- python - 对haversine公式使用列表推导
- javascript - react类组件中如何使用必须先完成的异步功能
- flutter - 如何访问 Cupertino Icons 1.0.0 画廊?