Python에는 작업 대기열 시스템을 구현하는 좋은 방법인 Celery 또는 Redis 대기열과 같은 백그라운드 작업을 구현하는 여러 가지 솔루션이 있습니다. 하지만 둘 다 사용하는 것은 번거롭습니다. Flask를 사용하여 한 터미널에서 백그라운드 작업을 호출하고 다른 터미널을 사용하여 백그라운드 작업을 중지하는 API를 구축하는 시나리오를 상상해 보세요.
Flask를 사용하여 백그라운드 작업을 시작하는 방법과 중지하는 방법의 두 가지 주요 방법으로 간단한 API를 구축합니다.
작업의 수명 주기를 관리하기 위해 간단한 스레드 간 통신 메커니즘인 이벤트 개체
를 사용합니다. Event Objects
,这是一种简单的线程间通信机制。
如下所示是所需导入的库、线程事件声明和后台任务方法:
from time import sleep from flask import Flask from flask_cors import CORS import threading thread_event = threading.Event() def backgroundTask(): while thread_event.is_set(): print('Background task running!') sleep(5)
这里的关键是is_set()
方法,它将返回内部线程事件标志的值:true
或false
。
首先,使用set()
方法把标志设置为true
,它将启动一个线程,并连续运行backgroundTask
方法。
@app.route("/start", methods=["POST"]) def startBackgroundTask(): try: thread_event.set() thread = threading.Thread(target=backgroundTask) thread.start() return "Background task started!" except Exception as error: return str(error)
如果要停止任务,调用clear()
方法将标志设置为false
@app.route("/stop", methods=["POST"]) def stopBackgroundTask(): try: thread_event.clear() return "Background task stopped!" except Exception as error: return str(error)🎜여기서 핵심은 내부 스레드 이벤트 플래그의 값을 반환하는
is_set()
메서드입니다. : 참 또는 거짓
. 🎜🎜먼저 set()
메서드를 사용하여 플래그를 true
로 설정합니다. 그러면 스레드가 시작되고 BackgroundTask
메서드가 계속해서 실행됩니다. 🎜rrreee🎜작업을 중지하려면 clear()
메서드를 호출하여 플래그를 false
로 설정하여 실행 중인 스레드를 중지하세요. 🎜아아아아위 내용은 Python Flask를 사용하여 효율적인 API 애플리케이션을 구축하고 백그라운드 작업을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!