queues
All checks were successful
Deploy powerbar.ti Frontend Portal / Deploy-Tinance2-Frontend-Portal-Production (push) Successful in 7s
All checks were successful
Deploy powerbar.ti Frontend Portal / Deploy-Tinance2-Frontend-Portal-Production (push) Successful in 7s
This commit is contained in:
parent
e0a0dedea9
commit
3e9b086c33
4 changed files with 49 additions and 2 deletions
|
@ -6,6 +6,7 @@ from app.utils import get_baytech_status_outlet_telnet
|
||||||
from flask_socketio import SocketIO, emit
|
from flask_socketio import SocketIO, emit
|
||||||
from gevent import monkey
|
from gevent import monkey
|
||||||
from app.jobs import scheduler, generate_batch_jobs
|
from app.jobs import scheduler, generate_batch_jobs
|
||||||
|
from app.threads import generate_threads
|
||||||
|
|
||||||
socketio = SocketIO(async_mode="gevent", logger=True, engineio_logger=True, cors_allowed_origins="*")
|
socketio = SocketIO(async_mode="gevent", logger=True, engineio_logger=True, cors_allowed_origins="*")
|
||||||
|
|
||||||
|
@ -43,7 +44,7 @@ def create_app():
|
||||||
app.register_blueprint(routes)
|
app.register_blueprint(routes)
|
||||||
powerbar_status()
|
powerbar_status()
|
||||||
scheduler.init_app(app)
|
scheduler.init_app(app)
|
||||||
generate_batch_jobs()
|
generate_threads()
|
||||||
socketio.init_app(app)
|
socketio.init_app(app)
|
||||||
return app
|
return app
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
39
app/threads.py
Normal file
39
app/threads.py
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
import threading
|
||||||
|
from app.settings import powerbars
|
||||||
|
import time
|
||||||
|
from app.utils import run_telnet_command
|
||||||
|
from queue import Queue
|
||||||
|
|
||||||
|
queues = {}
|
||||||
|
|
||||||
|
def baytech_batch_update(powerbar, powerbars, queue):
|
||||||
|
while True:
|
||||||
|
time.sleep(1)
|
||||||
|
print(f"Running Sync Job: {powerbar}")
|
||||||
|
print(f"Queue Size: {queue.qsize()}")
|
||||||
|
|
||||||
|
if queue.qsize() > 0:
|
||||||
|
print(f"Queue Size: {queue.qsize()}")
|
||||||
|
try:
|
||||||
|
job = queue.get()
|
||||||
|
print(f"Job: {job}")
|
||||||
|
outlet = job['outlet']
|
||||||
|
action = job['action']
|
||||||
|
print(f"Turning {action} powerbar {powerbar} outlet {outlet}")
|
||||||
|
command = run_telnet_command(powerbar,f"{action} {outlet}")
|
||||||
|
if command:
|
||||||
|
powerbars[powerbar]['outlets'][outlet]['state'] = action
|
||||||
|
print(f"Turned {action} powerbar {powerbar} outlet {outlet}")
|
||||||
|
except Exception as E:
|
||||||
|
print(f"Job Exception Error: {E}")
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def generate_threads():
|
||||||
|
for powerbar in powerbars:
|
||||||
|
if powerbars[powerbar]['method'] == 'batch_telnet':
|
||||||
|
if powerbars[powerbar]['type'] == 'baytech':
|
||||||
|
|
||||||
|
queues[powerbar] = Queue(maxsize=100)
|
||||||
|
t = threading.Thread(target=baytech_batch_update, args=[powerbar, powerbars, queues[powerbar]])
|
||||||
|
t.start()
|
|
@ -4,6 +4,7 @@ from app.utils import run_telnet_command
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
import time
|
import time
|
||||||
import app
|
import app
|
||||||
|
from app.threads import queues
|
||||||
|
|
||||||
routes = Blueprint('routes', __name__)
|
routes = Blueprint('routes', __name__)
|
||||||
|
|
||||||
|
@ -93,6 +94,7 @@ def powerbar_control(powerbar, outlet, action):
|
||||||
command = run_telnet_command(powerbar,f"{action} {outlet}")
|
command = run_telnet_command(powerbar,f"{action} {outlet}")
|
||||||
|
|
||||||
if powerbars[powerbar]['method'] == "batch_telnet":
|
if powerbars[powerbar]['method'] == "batch_telnet":
|
||||||
|
queues[powerbar].put({"outlet": outlet, "action" : action})
|
||||||
command = True
|
command = True
|
||||||
|
|
||||||
if command:
|
if command:
|
||||||
|
@ -111,6 +113,7 @@ def powerbar_control(powerbar, outlet, action):
|
||||||
command = run_telnet_command(powerbar,f"off {outlet}")
|
command = run_telnet_command(powerbar,f"off {outlet}")
|
||||||
|
|
||||||
if powerbars[powerbar]['method'] == "batch_telnet":
|
if powerbars[powerbar]['method'] == "batch_telnet":
|
||||||
|
queues[powerbar].put({"outlet": outlet, "action" : "off"})
|
||||||
command = True
|
command = True
|
||||||
|
|
||||||
if command:
|
if command:
|
||||||
|
@ -123,6 +126,7 @@ def powerbar_control(powerbar, outlet, action):
|
||||||
command = run_telnet_command(powerbar,f"on {outlet}")
|
command = run_telnet_command(powerbar,f"on {outlet}")
|
||||||
|
|
||||||
if powerbars[powerbar]['method'] == "batch_telnet":
|
if powerbars[powerbar]['method'] == "batch_telnet":
|
||||||
|
queues[powerbar].put({"outlet": outlet, "action" : "on"})
|
||||||
command = True
|
command = True
|
||||||
|
|
||||||
if command:
|
if command:
|
||||||
|
@ -137,6 +141,7 @@ def powerbar_control(powerbar, outlet, action):
|
||||||
command = run_telnet_command(powerbar,f"off {outlet}")
|
command = run_telnet_command(powerbar,f"off {outlet}")
|
||||||
|
|
||||||
if powerbars[powerbar]['method'] == "batch_telnet":
|
if powerbars[powerbar]['method'] == "batch_telnet":
|
||||||
|
queues[powerbar].put({"outlet": outlet, "action" : "off"})
|
||||||
command = True
|
command = True
|
||||||
|
|
||||||
if command:
|
if command:
|
||||||
|
@ -149,6 +154,7 @@ def powerbar_control(powerbar, outlet, action):
|
||||||
command = run_telnet_command(powerbar,f"on {outlet}")
|
command = run_telnet_command(powerbar,f"on {outlet}")
|
||||||
|
|
||||||
if powerbars[powerbar]['method'] == "batch_telnet":
|
if powerbars[powerbar]['method'] == "batch_telnet":
|
||||||
|
queues[powerbar].put({"outlet": outlet, "action" : "off"})
|
||||||
command = True
|
command = True
|
||||||
|
|
||||||
if command:
|
if command:
|
||||||
|
@ -239,6 +245,7 @@ def powebar_group_action(group, action):
|
||||||
command = run_telnet_command(powerbar,f"{action} {outlets}")
|
command = run_telnet_command(powerbar,f"{action} {outlets}")
|
||||||
|
|
||||||
if powerbars[powerbar]['method'] == "batch_telnet":
|
if powerbars[powerbar]['method'] == "batch_telnet":
|
||||||
|
queues[powerbar].put({"outlet": outlet, "action" : action})
|
||||||
command = True
|
command = True
|
||||||
|
|
||||||
if command:
|
if command:
|
||||||
|
|
Loading…
Reference in a new issue