Flask 告诉我在eventlet.tpool.execute()中包装什么构造才能正确处理Apscheduler任务

Flask 告诉我在eventlet.tpool.execute()中包装什么构造才能正确处理Apscheduler任务,flask,apscheduler,eventlet,Flask,Apscheduler,Eventlet,我正在为flask写一个网站。需要使用apScheduler定期执行任务。但问题是,由于与eventlet冲突,任务没有定期执行。在论坛上,我发现需要在eventlet.tpool.execute()中包装阻塞构造。告诉我具体需要包装什么 这就是我如何创建BackgroundScheduler scheduler = BackgroundScheduler(daemon=True) 有一个用于处理任务的类 from app import scheduler import json clas

我正在为flask写一个网站。需要使用
apScheduler
定期执行任务。但问题是,由于与
eventlet
冲突,任务没有定期执行。在论坛上,我发现需要在
eventlet.tpool.execute()
中包装阻塞构造。告诉我具体需要包装什么

这就是我如何创建
BackgroundScheduler

scheduler = BackgroundScheduler(daemon=True)
有一个用于处理任务的类

from app import scheduler
import json


class SchedulerTask(object):
    schedulers_list_publish = None

    def __init__(self):
        self.schedulers_list_publish = list()

    def add_scheduler_publish(self, dev_id, mqtt, topic_req_res, m_req_state, qos_req, timer):
        id_sch = dev_id + "_scheduler"
        sc = scheduler.add_job(self.publish_async, args=[mqtt, topic_req_res, m_req_state, qos_req, timer, id_sch],
                               id=id_sch, trigger='interval', seconds=timer)
        print(sc.id)
        self.schedulers_list_publish.append(id_sch)
        return id_sch

    def start_schedulers(self):
        print(self.schedulers_list_publish)
        scheduler.start()

    @staticmethod
    def del_schedulers(s_id):
        scheduler.remove_job(s_id)

    # передача запроса на получение данных
    @staticmethod
    def publish_async(mqtt, topic_req_res, m_req_state, qos_req, timer, id_sch):
        try:
            msg = json.dumps(m_req_state)
            mqtt.publish(topic_req_res, msg, qos_req)
        except Exception as ex:
            print("Error publish: " + str(ex))
我从另一个模块的函数调用:

def _handle_connect(self, client, userdata, flags, rc):
    code_list = list()
    for dev in self.devices:
        if dev.device_code not in code_list:        # запущен ли уже поток с таким кодом
            code_list.append(dev.device_code)
            mqtt.subscribe("BK" + dev.device_code + self.type_topic[1], self.qos_sub)
            self.schedulers_list.append(tpool.execute(sch_task.add_scheduler_publish, dev.device_code,
                                                                       mqtt,
                                                                       "BK" + dev.device_code + self.type_topic[0],
                                                                       self.m_request_state,
                                                                       self.qos_request,
                                                                       self.POOL_TIME))
    sch_task.start_schedulers()