Я создаю задание apscheduler в одной функции, вызываю эту функцию в приложении фляги в before_first_request ().Это задание запускает функцию каждые 30 секунд (которая находится в другом файле .py в моем приложении фляги).Основываясь на одном конкретном результате (из еще одного файла .py), я должен прекратить это задание apscheduler.
In app.py:
@myapp.before_first_request
def before_first_request():
..
..
check_conn()
then in checking.py, I'm creating and starting a Background_scheduler job.
def check_conn():
with myapp.test_request_context():
global process_scheduler
process_scheduler = BackgroundScheduler()
process_scheduler.add_job(func=send_conn_check, trigger="interval", seconds=10, id='conn_job')
process_scheduler.start()
atexit.register(lambda: process_scheduler.shutdown())
this 'send_conn_check' is in sendxx.py:
def send_conn_check():
.... # sends message at regular time interval
....
When a message is received for first time in backgrnd.py, the below function will do some work and then call 'check_state' method to remove the apscheduler job,
def call_conn_accept(ch, method, properties, body):
try:
print('Connection message from abc %r' % body)
json_str = body.decode('utf-8')
...
if accept == "ACCEPT":
check_state() # this function is defined in checking.py
Again in checking.py,
def check_state():
global process_scheduler
process_scheduler.remove_job(job_id='conn_job') #### At this point I have remove the process_scheduler job.
....
....
node1_CONN # Планировщик, отправляющий сообщение
node1_CONN
node1_CONN
ОШИБКА: root: возникла исключительная ситуация :( "имя 'process_scheduler' не определено",) # когда вызывается process_scheduler в check_state () в check.py для удаления задания apscheduler.
Сообщение о соединении от abc '{"node1": "ACCEPT"}'
node1_CONN # Как только вышеприведенное сообщение получено, планировщик должен удалить задание, но это не так.Он снова отправляет 'node1_CONN'
ОШИБКА: root: возникла исключительная ситуация :( "имя 'process_scheduler' не определено",)
Сообщение о соединении от abc '{"node1": "ПРИНЯТЬ "} '... ...