python - flask页面提交数据服务端独立处理数据思路请教
怪我咯
怪我咯 2017-04-17 17:31:23
0
3
371

一个比较简单的功能问题请教
现在实现的功能是这样的:
页面指定一个项目以及调节一个版本号

提交完之后服务端开始处理

@qq.route('/updateqq',methods=['GET','POST'])
def updateqq():
    versionform = VersionForm()
    rsyncwork = rsyncPro()
    if versionform.validate_on_submit():
        session['proId'] = request.form.get('selectid')
        session['versionNum'] = versionform.version.data
        print session.get('proId')
        print session.get('versionNum')

        #获取项目各个信息
        project_name = proDic.get('%s' %session.get('proId'))['pro_name']
        project_local_dir = proDic.get('%s' %session.get('proId'))['pro_dir']
        project_online_dir = proDic.get('%s' %session.get('proId'))['ol_dir']
        project_ip = proDic.get('%s' %session.get('proId'))['pro_ip']
        project_cmd = proDic.get('%s' %session.get('proId'))['pro_up']
        print project_name,project_local_dir,project_online_dir,project_ip,project_cmd
        
        #执行svn操作
        rsyncwork.get_version(project_local_dir)
        rsyncwork.online_laste(project_online_dir,project_name)
        up_version = int(session.get('versionNum'))
        rsyncwork.get_version(project_local_dir)
        return redirect(url_for('qq.updateqq'))
    return render_template('qq/updateqq.html',
                           prodict = pronameDict(),
                           versionform = versionform)

服务最终处理一些update,rsync,commit等一些操作内容,由于每次更新的内容不一定,执行这个的时间也不一定,当服务端执行这些时候,页面就会处于一直在加载的状态,所以我想把服务端处理的这些单独剥离出来,最终的实现功能就是,当页面提交完之后,前端就算处理完了,返回到原始的表单页面,服务端自己独立出来这些内容,而不是前端要等服务端处理完才跳转回到原来的页面。

这种的是要怎么的一种处理思路的?

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(3)
Ty80

これはフラスコでは実行できません。フラスコのモデルはリクエスト-レスポンスです。そして、あなたのニーズはこのプロセスとは無関係です。

簡単に言えば、Python を使用することを考慮すると、非同期タスクの処理を支援するシステムが必要です。

いいねを押す +0
小葫芦

より簡単な解決策:

  1. フロントエンド送信情報

  2. ビュー層は、誰に、誰に、何をするかなどの情報をデータベースなどに保存し、初期ステータスを未完了に設定します。

  3. バックグラウンド スクリプトを実行し、無限にループし、上で保存した場所から未完了のタスクを継続的に読み取り、特定のタスクを実行して、完了としてマークします。

いいねを押す +0
PHPzhong

あなたは flask の非同期メッセージ応答を参照していますが、これにはメッセージ キューの使用が必要です。メッセージ キューの機能は、ユーザーの現在のリクエストをキャッシュするだけであり、メッセージは対応するワーカーに派生されます。 Flask-Celery を参照してください。Flask-RQ

もよく使用します。
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート