CN111352715B - 一种销毁Flask线程的方法、系统、终端及存储介质 - Google Patents

一种销毁Flask线程的方法、系统、终端及存储介质 Download PDF

Info

Publication number
CN111352715B
CN111352715B CN202010138100.6A CN202010138100A CN111352715B CN 111352715 B CN111352715 B CN 111352715B CN 202010138100 A CN202010138100 A CN 202010138100A CN 111352715 B CN111352715 B CN 111352715B
Authority
CN
China
Prior art keywords
thread
flash
application
daemon
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010138100.6A
Other languages
English (en)
Other versions
CN111352715A (zh
Inventor
杨成成
孙然
宗云兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur General Software Co Ltd
Original Assignee
Inspur General Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur General Software Co Ltd filed Critical Inspur General Software Co Ltd
Priority to CN202010138100.6A priority Critical patent/CN111352715B/zh
Publication of CN111352715A publication Critical patent/CN111352715A/zh
Application granted granted Critical
Publication of CN111352715B publication Critical patent/CN111352715B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种销毁Flask线程的方法、系统、终端及存储介质,属于Flask框架应用领域,要解决的技术问题为如何避免Flask僵尸线程所造成的资源的浪费。方法,为Flask线程自定义销毁时间,并为Flask线程建立守护线程,通过守护线程执行Application;所述Flask线程为Flask任务执行线程,所述销毁时间为本次Flask线程执行期望花费的时间。系统,包括Client模块、WSGIWerkzurg模块、执行线程模块和Application模块。终端包括处理器,处理器被配置用于调用程序指令执行上述方法。存储介质存储有计算机程序,程序指令当被处理器执行时处理器执行上述方法。

Description

一种销毁Flask线程的方法、系统、终端及存储介质
技术领域
本发明涉及Flask框架应用领域,具体地说是一种销毁Flask线程的方法、系统、终端及存储介质。
背景技术
Flask是一个是十分流行的轻量级Web应用框架,能够很好的结合MVC模式进行开发,它基于Python编写,主要包括Werkzeug和Jinja2两个核心函数模块。Werkzeug负责业务处理,支持URL路由请求集成、Cookie和会话管理,可以处理HTTP基本事务,快速处理客户端的请求;Jinja2提供对HTML的支持,能够快速加载模板。Flask因为灵活、轻便且高效的特点被业界认可,深受广大软件工程师青睐。
目前,Flask在中小型网站开发中备受青睐。如图1Flask执行示意图所示,主要包含Client、WSGI Werkzeug、Application三个模块,Client为客户端,用于用户向服务器发送请求的起点,Werkzeu模块接受来自客户端的HTTP请求,与客户端建立长连接,并创建线程去执行应用程序,应用程序执行结束后,Werkzeug向客户端返回计算结果,如果应用程序的执行期间客户端终止与Flask的连接,任务执行线程并不会立即销毁,而是等到应用程序执行结束,才会自动销毁该线程。这种机制,对于资源消耗较大的应用势必会造成了严重的资源浪费。
伴随着人工智能时代的到来,机器学习和深度学习模型的训练在现在的制造业中逐渐成为主角,将人工智能算法与Flask框架相结合,会大大提高算法开发的效率;但由于算法训练时间较长,消耗计算资源大,Flask僵尸线程所造成的资源的浪费是无法估量的。
基于上述如何避免Flask僵尸线程所造成的资源的浪费,是需要解决的技术问题。
发明内容
本发明的技术任务是针对以上不足,提供一种销毁Flask线程的方法、系统、终端及存储介质,来解决避免Flask僵尸线程所造成的资源的浪费的问题。
第一方面,本发明提供一种销毁Flask线程的方法,为Flask线程自定义销毁时间,并为Flask线程建立守护线程,通过守护线程执行Application;
所述Flask线程为Flask任务执行线程,所述销毁时间为本次Flask线程执行期望花费的时间。
作为优选,所述方法应用于包括Client模块、WSGIWerkzurg模块、执行线程模块和Application模块的Flask框架系统,包括如下步骤:
Client模块启动后,与WSGIWerkzurg模块建立socket长连接;
通过Client模块向WSGIWerkzurg模块发送请求;
通过WSGIWerkzurg模块创建Flask任务执行线程;
将Flask任务执行线程转换为主线程,为主线程建立守护线程、并设定销毁时间;
将需要执行的应用程序Application放置于守护线程,通过守护线程执行应用程序Application;
Flask任务执行线程每隔预定时间检查守护线程中应用程序Application是否执行完毕,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,或者达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果;
通过Flask任务执行线程将执行结果返回WSGIWerkzurg模块,通过WSGIWerkzurg模块将执行结果返回客户端。
作为优选,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,向Flask任务执行线程返回的执行结果为计算结果;
如果达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果为超时标记。
作为优选,所述预定时间为1秒。
第二方面,本发明提供一种销毁Flask线程的系统,所述系统为基于Flask框架的系统,包括:
Client模块,用于发送请求;
WSGIWerkzurg模块,用于与Client模块建立socket长连接,并用于创建Flask任务执行线程;
执行线程模块,用于为Flask任务执行线程创建守护线程,并设定销毁时间;
Application模块,配置有Application应用程序,用于将Application应用程序放置于守护线程中,通过守护线程执行Application应用程序;
所述Flask任务执行线程用于每隔预定时间检查守护线程中应用程序Application是否执行完毕,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,或者达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果;
WSGIWerkzurg模块用于从Flask任务执行线程接受执行结果,并将执行结果反馈至Client模块。
作为优选,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,向Flask任务执行线程返回的执行结果为计算结果;
如果达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果为超时标记。
作为优选,所述预定时间为1秒。
第三方面,本发明提供一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令执行如第一方面任一项所述的一种销毁Flask线程的方法。
第四方面,本发明提供一种存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,程序指令当被处理器执行时所述处理器执行如第一方面任一项所述的一种销毁Flask线程的方法。
本发明的一种销毁Flask线程的方法、系统、终端及存储介质具有以下优点:
1、将Flask任务执行线程转化为主线程,主线程建立守护线程,为主线程设定销毁时间,通过守护线程伴随主线程销毁的机制达到销毁僵尸线程的目的
2、方法便捷,并紧扣Flask设计准则。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
下面结合附图对本发明进一步说明。
附图1为实施例1一种销毁Flask线程的方法的流程框图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
本发明实施例提供一种销毁Flask线程的方法、系统、终端及存储介质,用于解决如何避免Flask僵尸线程所造成的资源的浪费的技术问题。
实施例1:
本发明的一种销毁Flask线程的方法,为Flask线程自定义销毁时间,并为Flask线程建立守护线程,通过守护线程执行Application。
其中,Flask线程为Flask任务执行线程,销毁时间为本次Flask线程执行期望花费的时间。
本实施例中,该方法应用于包括Client模块、WSGIWerkzurg模块、执行线程模块和Application模块的Flask框架系统,包括如下步骤:
S100、Client模块启动后,与WSGIWerkzurg模块建立socket长连接;
S200、通过Client模块向WSGIWerkzurg模块发送请求;
S300、通过WSGIWerkzurg模块创建Flask任务执行线程;
S400、将Flask任务执行线程转换为主线程,为主线程建立守护线程、并设定销毁时间;
S500、将需要执行的应用程序Application放置于守护线程,通过守护线程执行应用程序Application;
S600、Flask任务执行线程每隔预定时间检查守护线程中应用程序Application是否执行完毕,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,或者达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果;
S700、通过Flask任务执行线程将执行结果返回WSGIWerkzurg模块,通过WSGIWerkzurg模块将执行结果返回客户端。
其中,步骤S200中,Client模块使用request向WSGIWerkzurg模块发送请求。
步骤S500中,如果通过守护线程执行应用程序Application时,如果执行完毕,将正在执行标记为False。
步骤S600中,预定时间为1秒。具体应用中可根据实际应用场景设定的时间。
如果未达到销毁时间、但守护线程中应用程序Application执行完毕,向Flask任务执行线程返回的执行结果为计算结果;如果达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果为超时标记。
本发明的一种销毁Flask线程的方法通过将由WSGIWerkzurg模块创建的Flask任务执行线程转化为主线程,为主线程建立守护线程,并为主线程设定销毁时间,通过守护线程伴随主线程销毁的机制达到销毁僵尸线程的目的。
实施例2:
本发明的一种销毁Flask线程的系统,该系统为基于Flask框架的系统,包括Client模块、WSGIWerkzurg模块、执行线程模块和Application模块,Client模块、WSGIWerkzurg模块、执行线程模块和Application模块依次连接。
Client模块用于发送请求,WSGIWerkzurg模块用于与Client模块建立socket长连接,并用于创建Flask任务执行线程,执行线程模块用于为Flask任务执行线程创建守护线程,并设定销毁时间;Application模块配置有Application应用程序,用于将Application应用程序放置于守护线程中,通过守护线程执行Application应用程序。
本实施例一种销毁Flask线程的系统工作方法为:
(1)Client模块启动后,与WSGIWerkzurg模块建立socket长连接,使用request向WSGIWerkzurg模块发送请求;
(2)WSGI Werkzug创建Flask任务执行线程;
(3)执行线程模块为Flask任务执行线程创建守护线程,并设定销毁时间;
(4)Application模块配置将Application应用程序放置于守护线程中,通过守护线程执行Application应用程序;
(5)Flask任务执行线程每隔预定时间检查守护线程中应用程序Application是否执行完毕,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,或者达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果;
(7)Flask任务执行线程将执行结果返回WSGIWerkzurg模块,WSGIWerkzurg模块将执行结果反馈至Client模块。
其中,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,向Flask任务执行线程返回的执行结果为计算结果;如果达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果为超时标记。
本实施例中,Flask任务执行线程每隔1秒检查守护线程中应用程序Application是否执行完毕。
实施例3:
本发明的一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用所述程序指令执行如实施例1公开的一种销毁Flask线程的方法。
该终端可为服务器。
实施例4:
本发明的一种存储介质,该存储介质为计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时处理器执行如实施例1公开的一种销毁Flask线程的方法。
该存储介质可为固态硬盘或机械硬盘等。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

Claims (8)

1.一种销毁Flask线程的方法,其特征在于为Flask线程自定义销毁时间,并为Flask线程建立守护线程,通过守护线程执行Application;
所述Flask线程为Flask任务执行线程,所述销毁时间为本次Flask线程执行期望花费的时间;
所述方法应用于包括Client模块、WSGIWerkzurg模块、执行线程模块和Application模块的Flask框架系统,包括如下步骤:
Client模块启动后,与WSGIWerkzurg模块建立socket长连接;
通过Client模块向WSGIWerkzurg模块发送请求;
通过WSGIWerkzurg模块创建Flask任务执行线程;
将Flask任务执行线程转换为主线程,为主线程建立守护线程、并设定销毁时间;
将需要执行的应用程序Application放置于守护线程,通过守护线程执行应用程序Application;
Flask任务执行线程每隔预定时间检查守护线程中应用程序Application是否执行完毕,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,或者达到销毁时间、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果;
通过Flask任务执行线程将执行结果返回WSGIWerkzurg模块,通过WSGIWerkzurg模块将执行结果返回客户端。
2.根据权利要求1所述的一种销毁Flask线程的方法,其特征在于如果未达到销毁时间、但守护线程中应用程序Application执行完毕,向Flask任务执行线程返回的执行结果为计算结果;
如果达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果为超时标记。
3.根据权利要求1或2所述的一种销毁Flask线程的方法,其特征在于所述预定时间为1秒。
4.一种销毁Flask线程的系统,其特征在于所述系统为基于Flask框架的系统,包括:
Client模块,用于发送请求;
WSGIWerkzurg模块,用于与Client模块建立socket长连接,并用于创建Flask任务执行线程;
执行线程模块,用于为Flask任务执行线程创建守护线程,并设定销毁时间;
Application模块,配置有Application应用程序,用于将Application应用程序放置于守护线程中,通过守护线程执行Application应用程序;
所述Flask任务执行线程用于每隔预定时间检查守护线程中应用程序Application是否执行完毕,如果未达到销毁时间、但守护线程中应用程序Application执行完毕,或者达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果;
WSGIWerkzurg模块用于从Flask任务执行线程接受执行结果,并将执行结果反馈至Client模块。
5.根据权利要求4所述的一种销毁Flask线程的系统,其特征在于如果未达到销毁时间、但守护线程中应用程序Application执行完毕,向Flask任务执行线程返回的执行结果为计算结果;
如果达到销毁、但守护线程中应用程序Application未执行完毕,向Flask任务执行线程返回执行结果为超时标记。
6.根据权利要求4或5所述的一种销毁Flask线程的系统,其特征在于所述预定时间为1秒。
7.一种终端,其特征在于包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令执行如权利要求1-3任一项所述的一种销毁Flask线程的方法。
8.一种存储介质,所述存储介质为计算机可读存储介质,其特征在于所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,程序指令当被处理器执行时所述处理器执行如权利要求1-3任一项所述的一种销毁Flask线程的方法。
CN202010138100.6A 2020-03-03 2020-03-03 一种销毁Flask线程的方法、系统、终端及存储介质 Active CN111352715B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010138100.6A CN111352715B (zh) 2020-03-03 2020-03-03 一种销毁Flask线程的方法、系统、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010138100.6A CN111352715B (zh) 2020-03-03 2020-03-03 一种销毁Flask线程的方法、系统、终端及存储介质

Publications (2)

Publication Number Publication Date
CN111352715A CN111352715A (zh) 2020-06-30
CN111352715B true CN111352715B (zh) 2023-09-05

Family

ID=71195861

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010138100.6A Active CN111352715B (zh) 2020-03-03 2020-03-03 一种销毁Flask线程的方法、系统、终端及存储介质

Country Status (1)

Country Link
CN (1) CN111352715B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112015559A (zh) * 2020-09-03 2020-12-01 深圳虹川科技有限公司 基于http协议的异步实时数据更新系统及方法
CN112379993A (zh) * 2020-12-08 2021-02-19 中国建设银行股份有限公司 一种机器人流程自动化处理系统、方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375758A (zh) * 2010-08-20 2012-03-14 联芯科技有限公司 移动通信设备浏览器防假死方法和装置
CN107566385A (zh) * 2017-09-14 2018-01-09 郑州云海信息技术有限公司 一种Web多点登陆限制及超时处理系统及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6765571B2 (en) * 1999-09-24 2004-07-20 Sun Microsystems, Inc. Using a master controller to manage threads and resources for scene-based rendering
US8843930B2 (en) * 2012-07-10 2014-09-23 Sap Ag Thread scheduling and control framework

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375758A (zh) * 2010-08-20 2012-03-14 联芯科技有限公司 移动通信设备浏览器防假死方法和装置
CN107566385A (zh) * 2017-09-14 2018-01-09 郑州云海信息技术有限公司 一种Web多点登陆限制及超时处理系统及方法

Also Published As

Publication number Publication date
CN111352715A (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
CN107105009B (zh) 基于Kubernetes系统对接工作流引擎的作业调度方法和装置
JP5906246B2 (ja) コンピュートクラスタ(computecluster)上でのデバッガ起動およびアタッチ
CN111352715B (zh) 一种销毁Flask线程的方法、系统、终端及存储介质
CN107688538B (zh) 一种脚本执行方法、装置及计算设备
CN112130993A (zh) 基于图形化建模的电力边缘物联代理边缘计算方法及系统
WO2020232951A1 (zh) 一种任务执行方法及装置
CN114880159B (zh) 数据处理方法、装置、设备及存储介质
US10891193B2 (en) Application health monitoring and automatic remediation
CN110795141A (zh) 一种训练任务提交方法、装置、设备及介质
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
CN111367693A (zh) 基于消息队列调度插件任务的方法、系统、设备及介质
CN114610404A (zh) 基于应用框架的组件调用方法、装置和计算机设备
CN109743127A (zh) 一种信息码的处理方法、电子设备及存储介质
CN110659131A (zh) 任务处理方法、电子装置、计算机设备及存储介质
CN111294377B (zh) 一种依赖关系的网络请求发送方法、终端装置及存储介质
CN112614002A (zh) 数据采集系统、方法、装置、电子设备及计算机存储介质
CN114237594A (zh) 一种表单界面生成方法、装置、系统及可读存储介质
CN105955790A (zh) 数据处理方法及装置
CN115550354A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN113254014A (zh) 一种基于Sketch插件的界面开发方法、装置及系统
CN112817745A (zh) 一种任务处理方法及装置
US7568194B2 (en) Method and system for availability checking on distributed objects
US20220210248A1 (en) Information interaction methods, apparatuses, devices, and systems and storage media
Roungroongsom et al. Formal verification of multi-agent system based on jade: A semi-runtime approach
CN115114022A (zh) 对gpu资源进行使用的方法、系统、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant