Merge pull request #24 from bmartin5692/remove_Context

Remove contextVars
This commit is contained in:
Brian Martin 2019-05-12 15:50:59 -04:00 committed by GitHub
commit 58919e1cbb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 38 deletions

View file

@ -5,7 +5,6 @@ from .mqttserver import MQTTServer
from .mqttserver import MQTTHelperBot from .mqttserver import MQTTHelperBot
from .xmppserver import XMPPServer from .xmppserver import XMPPServer
import asyncio import asyncio
import contextvars
import time import time
from datetime import datetime, timedelta from datetime import datetime, timedelta
import platform import platform
@ -17,10 +16,6 @@ from tinydb import TinyDB, Query
import json import json
from tinydb.storages import MemoryStorage from tinydb.storages import MemoryStorage
bumper_users_var = contextvars.ContextVar("bumper_users", default=[])
bumper_clients_var = contextvars.ContextVar("bumper_clients", default=[])
bumper_bots_var = contextvars.ContextVar("bumper_bots", default=[])
ca_cert = "./certs/CA/cacert.pem" ca_cert = "./certs/CA/cacert.pem"
server_cert = "./certs/cert.pem" server_cert = "./certs/cert.pem"
server_key = "./certs/key.pem" server_key = "./certs/key.pem"
@ -82,15 +77,12 @@ def db_file():
def os_db_path(): def os_db_path():
db_path = ""
if platform.system() == "Windows": if platform.system() == "Windows":
os.makedirs(os.getenv("APPDATA"), exist_ok=True) #Ensure db_path directory exists or create
db_path = os.path.join(os.getenv("APPDATA")) return os.path.join(os.getenv("APPDATA"), "bumper.db")
else: else:
db_path = os.path.expanduser("~/.config") os.makedirs(os.path.expanduser("~/.config"), exist_ok=True) #Ensure db_path directory exists or create
return os.path.expanduser("~/.config/bumper.db")
os.makedirs(db_path, exist_ok=True) #Ensure db_path directory exists or create
return os.path.join(db_path, "bumper.db")
def db_get(): def db_get():
try: try:

View file

@ -8,7 +8,6 @@ import bumper
import time import time
from datetime import datetime, timedelta from datetime import datetime, timedelta
import asyncio import asyncio
import contextvars
from aiohttp import web from aiohttp import web
import uuid import uuid

View file

@ -8,7 +8,6 @@ from hbmqtt.broker import Broker
from hbmqtt.client import MQTTClient from hbmqtt.client import MQTTClient
from hbmqtt.mqtt.constants import QOS_0, QOS_1, QOS_2 from hbmqtt.mqtt.constants import QOS_0, QOS_1, QOS_2
import pkg_resources import pkg_resources
import contextvars
import time import time
from threading import Thread from threading import Thread
import ssl import ssl
@ -40,7 +39,7 @@ class MQTTHelperBot:
): ):
self.address = address self.address = address
self.client_id = "helper1@bumper/helper1" self.client_id = "helper1@bumper/helper1"
self.command_responses = contextvars.ContextVar("command_responses", default=[]) self.command_responses = []
self.helperthread = None self.helperthread = None
def run(self, run_async=False): def run(self, run_async=False):
@ -99,10 +98,9 @@ class MQTTHelperBot:
message = await self.Client.deliver_message() message = await self.Client.deliver_message()
# helperbotlog.debug("HelperBot MQTT Received Message on Topic: {} - Message: {}".format(message.topic, str(message.payload.decode("utf-8")))) # helperbotlog.debug("HelperBot MQTT Received Message on Topic: {} - Message: {}".format(message.topic, str(message.payload.decode("utf-8"))))
cresp = self.command_responses.get()
if str(message.topic).split("/")[6] == "helper1": if str(message.topic).split("/")[6] == "helper1":
cresp.append( self.command_responses.append(
{ {
"time": time.time(), "time": time.time(),
"topic": message.topic, "topic": message.topic,
@ -111,15 +109,14 @@ class MQTTHelperBot:
) )
# Cleanup "expired messages" > 60 seconds from time # Cleanup "expired messages" > 60 seconds from time
for msg in cresp: for msg in self.command_responses:
expire_time = ( expire_time = (
datetime.fromtimestamp(msg["time"]) + timedelta(seconds=10) datetime.fromtimestamp(msg["time"]) + timedelta(seconds=10)
).timestamp() ).timestamp()
if time.time() > expire_time: if time.time() > expire_time:
# helperbotlog.debug("Pruning Message Time: {}, MsgTime: {}, MsgTime+60: {}".format(time.time(), msg['time'], expire_time)) # helperbotlog.debug("Pruning Message Time: {}, MsgTime: {}, MsgTime+60: {}".format(time.time(), msg['time'], expire_time))
cresp.remove(msg) self.command_responses.remove(msg)
self.command_responses.set(cresp)
# helperbotlog.debug("MQTT Command Response List Count: %s" %len(cresp)) # helperbotlog.debug("MQTT Command Response List Count: %s" %len(cresp))
except Exception as e: except Exception as e:
@ -132,9 +129,8 @@ class MQTTHelperBot:
while time.time() < t_end: while time.time() < t_end:
await asyncio.sleep(0.1) await asyncio.sleep(0.1)
responses = self.command_responses.get() if len(self.command_responses) > 0:
if len(responses) > 0: for msg in self.command_responses:
for msg in responses:
topic = str(msg["topic"]).split("/") topic = str(msg["topic"]).split("/")
if topic[6] == "helper1" and topic[10] == requestid: if topic[6] == "helper1" and topic[10] == requestid:
# helperbotlog.debug('VacBot MQTT Response: Topic: %s Payload: %s' % (msg['topic'], msg['payload'])) # helperbotlog.debug('VacBot MQTT Response: Topic: %s Payload: %s' % (msg['topic'], msg['payload']))
@ -143,9 +139,7 @@ class MQTTHelperBot:
else: else:
resppayload = str(msg["payload"]) resppayload = str(msg["payload"])
resp = {"id": requestid, "ret": "ok", "resp": resppayload} resp = {"id": requestid, "ret": "ok", "resp": resppayload}
cresp = self.command_responses.get() self.command_responses.remove(msg)
cresp.remove(msg)
self.command_responses.set(cresp)
return resp return resp
return {"id": requestid, "errno": "timeout", "ret": "fail"} return {"id": requestid, "errno": "timeout", "ret": "fail"}

View file

@ -4,7 +4,6 @@ from threading import Thread
import sys, socket, threading, re, time, logging, uuid, xml.etree.ElementTree as ET import sys, socket, threading, re, time, logging, uuid, xml.etree.ElementTree as ET
import base64 import base64
import ssl import ssl
import contextvars
import bumper import bumper
import asyncio import asyncio

View file

@ -51,14 +51,6 @@ def main():
conf_address_8007, usessl=False, helperbot=mqtt_helperbot conf_address_8007, usessl=False, helperbot=mqtt_helperbot
) )
# add user
# users = bumper.bumper_users_var.get()
# user1 = bumper.BumperUser('user1')
# user1.add_device('devid')
# user1.add_bot('bot_did')
# users.append(user1)
# bumper.bumper_users_var.set(users)
try: try:
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
except: except: