Browse Source

Trying to fix thread pool.

Bob Huang 4 years ago
parent
commit
760ce91227
2 changed files with 26 additions and 2 deletions
  1. 2 0
      backend_refactor/app.py
  2. 24 2
      backend_refactor/pool/thread_pool.py

+ 2 - 0
backend_refactor/app.py

@@ -9,6 +9,7 @@ import route.upload
 from config import VERSION_PREFIX, MAX_CONTENT_LENGTH, MYSQL_URI
 from db import db
 from route.util import make_response
+from pool.thread_pool import init_workers
 
 app = Flask(__name__)
 
@@ -28,6 +29,7 @@ with app.app_context():
     # db.drop_all()
     db.create_all()
 
+init_workers()
 
 @app.route("/")
 def hello_world():

+ 24 - 2
backend_refactor/pool/thread_pool.py

@@ -1,3 +1,25 @@
-from concurrent.futures import ThreadPoolExecutor
+import threading
+import queue
+import logging
 
-pool = ThreadPoolExecutor()
+q = queue.Queue()
+
+def worker():
+	while True:
+		task = q.get()
+		logging.debug(f"Working on {task}")
+		job, callback = task
+		job()
+		callback()
+		logging.debug(f"Working on {task} done.")
+		q.task_done()
+
+def init_workers(count=2):	
+	for _ in range(count):
+		threading.Thread(worker).start()
+
+class Pool:
+	def submit(job, callback):
+		q.put((job, callback))
+
+pool = Pool()