Sqlalchemy: الكتابة إلى قاعدة البيانات بعد إرسال الاستجابة
-
26-09-2019 - |
سؤال
لدي خدمة بسيطة تفيد تقريبًا:
- يتصل عميل HTTP بالخادم
- يكتب الخادم SessionId للعميل والجدول الزمني لقاعدة البيانات ، وفي معظم الحالات يعيد فقط استجابة فارغة
(الحالات التي تقوم فيها بعمل حقيقي وإرجاع البيانات الفعلية غير ذات صلة بهذا السؤال)
من أجل إرجاع هذا الرد في أقرب وقت ممكن ، أود أن أكتب المعلومات إلى Memcache في جسم معالج الطلب (لأن Memcache سريع) ، وتفرخ مؤشر ترابط منفصل حيث ستقوم وظيفة أخرى باستخدام SqlalChemy أن يكتبها إلى المستمر تخزين. وبهذه الطريقة ، سأتمكن من العودة فورًا بعد الكتابة إلى Memcache وتفريغ مؤشر ترابط ، ولن يضطر معالج الطلب إلى الانتظار حتى يحفظ SqlalChemy المعلومات إلى قاعدة البيانات.
هل لهذا معنى؟ إذا كانت الإجابة بنعم ، فكيف يمكنني تنفيذها؟
المحلول
يمكنك استخدام شيء مثل قائمة انتظار المهمة الموزعة الكرفس لتفريغ المعالجة إلى آلات أخرى. يتطلب الأمر إعداد بنية تحتية منفصلة ، ولكنه سيسمح بتسليم المهام من طلبات الويب للمعالجة في الخلفية ، في حين يمكن إعادة HTTP REPSONSE إلى الطلب على الفور.