Как вызвать сообщение flask_websocket от APScheduler?

96
12

Я создаю приложение для работы в списке ToDo. Для этого я получил флэшку, которая хранит задание и запускает событие, когда крайний срок достигнут с помощью Advanced Python Scheduler (APScheduler).

На внешнем интерфейсе у меня есть настольное приложение Python, которое подключается к бэкэнд через веб-порты и ждет, пока сервер отправит предупреждение о том, что крайний срок пришел.

Главный сервер фляжки с функцией гнезда

#To add Flask Sockets for double realtime communication.
from flask_sockets import Sockets

#Define a new Flask app.
application = Flask(__name__)
sockets = Sockets(application)

#Import Daemon to schedule tasks.
from Daemon.controller import Daemon
daemon = Daemon()
daemon.startDaemon()

#This is the daemon route that my client connects to.
#This connection remains for as long as the client has the client app open.
@sockets.route('/daemon')
def schedulerTrigger(ws):
while not ws.closed:
if daemon.isTask():
ws.send("Task HERE!")
print("Task Sent")
message = ws.receive()
print(message)
ws.send(message)
time.sleep(1)

#After this we got the if__main__ initialization of Flask-sockets.
...

Класс Flask Daemon для управления запланированными действиями с использованием APScheduler

#Imports and other stuff

class Daemon():
def __init__(self):
super(Daemon, self).__init__()
self.event = False

#HERE JUST A FUNCTION TO INITIALIZE DAEMON AND USE
#REMINDPOST TO TELL THE USER THAT THE TASK IS OVERDUE

def remindPost(self, tskName, tskContent, tskPriority, tskStrtDate, tskEndDate):
self.event = True
print("Don't forget to do: ")
print(tskName)
print(tskContent)
print("Priority: " + str(tskPriority))
print(tskStrtDate)
print(tskEndDate)

Проблема в том, что у меня есть APScheduler в классе и петля сокета в главном приложении. Я тестировал, и петля сокета работает сама по себе, так же, как и метод APScheduler.

Я хочу, чтобы APScheduler запускал цикл сокета, чтобы пользователь-клиент знал, что задача просрочена, но я не смог связать их друг с другом. Каков правильный метод, чтобы метод APScheduler в классе Daemon запускал цикл сокета и отправлял пользователю сообщение?

спросил(а) 2018-09-12T21:22:00+03:00 1 год, 6 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема