اذهب إلى المحتوى

السؤال

نشر

لدي بعض مهام التي يتعين القيام بها عندما يزور أحد المستخدمين أحد المسارات route في فلاسك Flask، لكنني لا أريد إبقاء العميل في انتظار الصفحة لكي يكتمل تحميلها، أي أريد إرسال رد Response للعميل والقيام بتنفيذ دالة ما بعد إرسال الرد للعميل.

هل هناك طريقة في فلاسك Flask لإرسال الرد إلى العميل ثم متابعة إجراء بعض العمليات؟

Recommended Posts

  • 1
نشر (معدل)

نعم هناك طريقة:

  1. قُم بالفصل بين المهام التي يتعين على الخادم القيام بها وبين إرسال الرد للعميل. 
  2. إستخدم مكتبة بايثون threading لإنشاء Thread ليقوم بتنفيذ الدالة بعد إرسال الرد للعميل على الشكل الآتي:
    from flask import Flask, request
    import time
    import threading#قم باستدعاء مكتبة بايثون
    
    app = Flask(__name__)
    
    @app.route('/your-route', methods=['POST'])
    def start_task():
        
        def long_running_task(**kwargs): # أنشئ الدالة
            """
            مهمة طويلة المدى 
            """
            ...
            
        # قم بتنفيذ الدالة داخل 
        # Thread
        thread = threading.Thread(target=long_running_task)
        thread.start()
        
        return {"message": "Accepted"}, 202 # هنا تقوم بإرجاع الرد للعميل
      
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=5000, debug=True)

     

تم التعديل في بواسطة مسعود زاهي

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...