forked from sch/Slixfeed
Store looping task inside a dictionary so that it would be cancellable by pointing at the dictionary
This commit is contained in:
parent
e3a53068af
commit
d712eaea31
1 changed files with 42 additions and 23 deletions
|
@ -13,6 +13,7 @@ import sqlitehandler
|
||||||
|
|
||||||
jid_tasker = {}
|
jid_tasker = {}
|
||||||
task_manager = {}
|
task_manager = {}
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
time_now = datetime.now()
|
time_now = datetime.now()
|
||||||
# time_now = time_now.strftime("%H:%M:%S")
|
# time_now = time_now.strftime("%H:%M:%S")
|
||||||
|
@ -52,7 +53,7 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
self.add_event_handler("message", self.message)
|
self.add_event_handler("message", self.message)
|
||||||
self.add_event_handler("disconnected", self.reconnect)
|
self.add_event_handler("disconnected", self.reconnect)
|
||||||
# Initialize event loop
|
# Initialize event loop
|
||||||
self.loop = asyncio.get_event_loop()
|
# self.loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
|
|
||||||
async def start(self, event):
|
async def start(self, event):
|
||||||
|
@ -96,6 +97,11 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
jid = msg["from"].bare
|
jid = msg["from"].bare
|
||||||
message = " ".join(msg["body"].split())
|
message = " ".join(msg["body"].split())
|
||||||
message = message.lower()
|
message = message.lower()
|
||||||
|
|
||||||
|
print(print_time(), "COMMAND ACCOUNT")
|
||||||
|
print("COMMAND:", message)
|
||||||
|
print("ACCOUNT: " + str(msg["from"]))
|
||||||
|
|
||||||
if message.startswith("help"):
|
if message.startswith("help"):
|
||||||
action = print_help()
|
action = print_help()
|
||||||
# NOTE: Might not need it
|
# NOTE: Might not need it
|
||||||
|
@ -132,7 +138,7 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
# action = "Updates are enabled."
|
# action = "Updates are enabled."
|
||||||
key = "enabled"
|
key = "enabled"
|
||||||
val = 1
|
val = 1
|
||||||
actiona = await initdb(jid, sqlitehandler.set_settings_value, [key, val])
|
action = await initdb(jid, sqlitehandler.set_settings_value, [key, val])
|
||||||
asyncio.create_task(self.task_jid(jid))
|
asyncio.create_task(self.task_jid(jid))
|
||||||
# print(print_time(), "task_manager[jid]")
|
# print(print_time(), "task_manager[jid]")
|
||||||
# print(task_manager[jid])
|
# print(task_manager[jid])
|
||||||
|
@ -144,26 +150,24 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
elif message.startswith("stop"):
|
elif message.startswith("stop"):
|
||||||
# action = "Updates are disabled."
|
# action = "Updates are disabled."
|
||||||
try:
|
try:
|
||||||
|
print(print_time(), "task_manager[jid]")
|
||||||
|
print(task_manager[jid])
|
||||||
task_manager[jid]["check"].cancel()
|
task_manager[jid]["check"].cancel()
|
||||||
# task_manager[jid]["status"].cancel()
|
# task_manager[jid]["status"].cancel()
|
||||||
task_manager[jid]["interval"].cancel()
|
task_manager[jid]["interval"].cancel()
|
||||||
key = "enabled"
|
key = "enabled"
|
||||||
val = 0
|
val = 0
|
||||||
actiona = await initdb(jid, sqlitehandler.set_settings_value, [key, val])
|
action = await initdb(jid, sqlitehandler.set_settings_value, [key, val])
|
||||||
await self.send_status(jid)
|
|
||||||
print(print_time(), "task_manager[jid]")
|
|
||||||
print(task_manager[jid])
|
|
||||||
except:
|
except:
|
||||||
# action = "Updates are already disabled."
|
action = "Updates are already disabled."
|
||||||
await self.send_status(jid)
|
print("Updates are already disabled. Nothing to do.")
|
||||||
|
# await self.send_status(jid)
|
||||||
else:
|
else:
|
||||||
action = "Unknown command. Press \"help\" for list of commands"
|
action = "Unknown command. Press \"help\" for list of commands"
|
||||||
|
# NOTE Message won't be sent if status is send before it
|
||||||
|
# await self.send_status(jid)
|
||||||
if action: msg.reply(action).send()
|
if action: msg.reply(action).send()
|
||||||
|
|
||||||
print(print_time(), "COMMAND ACCOUNT")
|
|
||||||
print("COMMAND:", message)
|
|
||||||
print("ACCOUNT: " + str(msg["from"]))
|
|
||||||
|
|
||||||
|
|
||||||
async def select_file(self):
|
async def select_file(self):
|
||||||
"""
|
"""
|
||||||
|
@ -264,12 +268,19 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
sqlitehandler.get_settings_value,
|
sqlitehandler.get_settings_value,
|
||||||
"interval"
|
"interval"
|
||||||
)
|
)
|
||||||
|
print(print_time(), "asyncio.get_event_loop().time()")
|
||||||
|
print(print_time(), asyncio.get_event_loop().time())
|
||||||
# await asyncio.sleep(60 * interval)
|
# await asyncio.sleep(60 * interval)
|
||||||
self.loop.call_at(
|
task_manager[jid]["interval"] = loop.call_at(
|
||||||
self.loop.time() + 60 * interval,
|
loop.time() + 60 * interval,
|
||||||
self.loop.create_task,
|
loop.create_task,
|
||||||
self.send_update(jid)
|
self.send_update(jid)
|
||||||
)
|
)
|
||||||
|
# loop.call_later(
|
||||||
|
# 60 * interval,
|
||||||
|
# loop.create_task,
|
||||||
|
# self.send_update(jid)
|
||||||
|
# )
|
||||||
|
|
||||||
async def send_status(self, jid):
|
async def send_status(self, jid):
|
||||||
"""
|
"""
|
||||||
|
@ -310,9 +321,9 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
|
|
||||||
await asyncio.sleep(60 * 20)
|
await asyncio.sleep(60 * 20)
|
||||||
|
|
||||||
# self.loop.call_at(
|
# loop.call_at(
|
||||||
# self.loop.time() + 60 * 20,
|
# loop.time() + 60 * 20,
|
||||||
# self.loop.create_task,
|
# loop.create_task,
|
||||||
# self.send_status(jid)
|
# self.send_status(jid)
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
@ -331,12 +342,20 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
print(print_time(), "loop")
|
print(print_time(), "loop")
|
||||||
print(loop)
|
print(loop)
|
||||||
print(print_time(), "loop")
|
print(print_time(), "loop.time()")
|
||||||
|
print(print_time(), loop.time())
|
||||||
|
print(print_time(), "self.loop.time()")
|
||||||
|
print(print_time(), self.loop.time())
|
||||||
task_manager[jid][key] = loop.call_at(
|
task_manager[jid][key] = loop.call_at(
|
||||||
loop.time() + 60 * float(val),
|
loop.time() + 60 * float(val),
|
||||||
loop.create_task,
|
loop.create_task,
|
||||||
self.send_update(jid)
|
self.send_update(jid)
|
||||||
)
|
)
|
||||||
|
# task_manager[jid][key] = loop.call_later(
|
||||||
|
# 60 * float(val),
|
||||||
|
# loop.create_task,
|
||||||
|
# self.send_update(jid)
|
||||||
|
# )
|
||||||
# task_manager[jid][key] = self.send_update.loop.call_at(
|
# task_manager[jid][key] = self.send_update.loop.call_at(
|
||||||
# self.send_update.loop.time() + 60 * val,
|
# self.send_update.loop.time() + 60 * val,
|
||||||
# self.send_update.loop.create_task,
|
# self.send_update.loop.create_task,
|
||||||
|
@ -357,9 +376,9 @@ async def check_updates(jid):
|
||||||
await initdb(jid, datahandler.download_updates)
|
await initdb(jid, datahandler.download_updates)
|
||||||
await asyncio.sleep(60 * 90)
|
await asyncio.sleep(60 * 90)
|
||||||
# Schedule to call this function again in 90 minutes
|
# Schedule to call this function again in 90 minutes
|
||||||
# self.loop.call_at(
|
# loop.call_at(
|
||||||
# self.loop.time() + 60 * 90,
|
# loop.time() + 60 * 90,
|
||||||
# self.loop.create_task,
|
# loop.create_task,
|
||||||
# self.check_updates(jid)
|
# self.check_updates(jid)
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
@ -375,7 +394,7 @@ def print_help():
|
||||||
" Supported filetypes: Atom, RDF and RSS. \n"
|
" Supported filetypes: Atom, RDF and RSS. \n"
|
||||||
"\n"
|
"\n"
|
||||||
"BASIC USAGE: \n"
|
"BASIC USAGE: \n"
|
||||||
" start \n"
|
" Start \n"
|
||||||
" Enable bot and send updates. \n"
|
" Enable bot and send updates. \n"
|
||||||
" Stop \n"
|
" Stop \n"
|
||||||
" Disable bot and stop updates. \n"
|
" Disable bot and stop updates. \n"
|
||||||
|
|
Loading…
Reference in a new issue