无法在 exchangelib for 循环中影响生成器

问题描述

我无法成功地让服务器端生成器在循环交换交换库项目时让步给客户端 javascript。我在兜圈子。进度条不会超过最初的 9% - 由下面的 bar_min 变量设置。我只能假设它是 exchangelib for 循环特有的东西......感谢一些专家对我的业余努力的投入,谢谢。以下是来自 Flask 脚本的服务器端片段:

@flask_app.route('/demo/process_ews',methods=['GET','POST']) 
def pulsemail_EWS():

    __OUTLOOK_EMAIL__ = session.get('__OUTLOOK_EMAIL__')
    __OUTLOOK_PASSWORD__ = session.get('__OUTLOOK_PASSWORD__')
    __DBUSER__ = session.get('__DBUSER__')

    def generate():

        subject_actual = ""
        
        bar_min = 9
        bar_max = 100
        increments = (bar_max - bar_min) / config.__EMAILCOUNT__
        increments = int(round(increments))
        yield "data:" + str(bar_min) + "\n\n"
            
        full_path = config.__USER_DB_PATH__+__DBUSER__+"_pulsemail"
        full_path = full_path.replace("'","")

        __LAST_ANALYSYS__ = setDate()
        
        account = connect_to_EWS(__OUTLOOK_EMAIL__,__OUTLOOK_PASSWORD__,__OUTLOOK_EMAIL__)

        for item in account.inBox.filter(datetime_received__gt=__LAST_ANALYSYS__+timedelta(0,1)).only('subject','text_body','datetime_received','sender','cc_recipients'):
            
            yield "data:" + str(bar_min) + "\n\n"
            bar_min += increments
            time.sleep(0.5)


    return flask_app.response_class(generate(),mimetype='text/event-stream')

这里是客户端JS:

<script>
  var source = new EventSource("/demo/process_ews");

  source.onmessage = function(event) {
    $('.progress-bar').css('width',event.data+'%').attr('aria-valueNow',event.data);
    $('.progress-bar-label').text(event.data+'%');

    if(event.data == 100){
      source.close()

      var begin = document.getElementById('begin');
      begin.textContent = 'InBox Email Retrieval Complete';

      location.replace("/demo/ews_output_sent")
    }

  }

  function stop() {
    source.close(); // this stops the Feed
    location.replace("/demo/ews_output_sent")
  };
</script>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)