التواصل مع الوظيفة الخلفية من خادم الويب أو صفحة الويب

StackOverflow https://stackoverflow.com/questions/1504729

  •  19-09-2019
  •  | 
  •  

سؤال

لدي "جهاز" (لعدم وجود وصف أفضل) تشغيل Linux.

حاليا أنا SSH في المربع لإطلاق الوظائف. هذا ليس ودود بما فيه الكفاية لمستخدمي، لذلك أنا أضع معا ويب ويب بسيط لإطلاق البرنامج النصي. يعمل الوظيفة في أي مكان من 10 ثوان لعدة ساعات. واجهة المستخدم ويب تحتاج إلى تعكس حالة الوظيفة.

لقد قمت بحل مشاكل مماثلة في الماضي عن طريق تشغيل البرنامج الخفي على الخادم الذي يشاهد دليل التخزين المؤقت (أو جدول DB) لطلبات العمل الجديدة، وتفرخ عملية، وتراقب العملية، وتوفر معلومات ل Web UI في جدول DB أو ملف الحالة. ثم يسقط WEB UI طلبات الوظيفة في مؤخر DIR (DB) وأحيانا تحقق من ملف الحالة (DB). قد يكون هذا مبالغة في هذه المهمة.

بالنسبة للمهمة الحالية، أفكر في تفريغ الوظيفة من CGI والتحقق من خلال احيانا من ملف الحالة التي تكتب المهمة مع تقدمها أو تخطئها.

سؤالي: هل هناك أفضل (أبسط / أسرع إلى الكتابة / أكثر قوة) للقيام بذلك؟ هل هناك أنماط أو أدوات موجودة يجب أن أعرفها؟

(حلول بيثون مثالية).

شكرًا.

هل كانت مفيدة؟

المحلول

أفعل هذا في عدد من المشاريع. تطبيق ويب (في الغالب Python / CGI) يفلت من نص ثعبان منفصل (باستخدام Subprocess) على الفور المخلصين نفسه للقيام بالعمل. يستمر تطبيق الويب ثم إصدار طلبات AJAX للتحقق من تقدم عملية الخفيين (يمكنني استخدام ملفات TXT البسيطة للاتصالات، ربما تكون قاعدة البيانات أفضل). اللمسة اللطيفة واحدة هي الحصول على برنامج الخفيين عبر البريد الإلكتروني المستخدم النهائي بمجرد انتهاء (مع رابط لاسترداد النتائج). بهذه الطريقة يمكن للمستخدم إغلاق مستعرض الويب الخاص بهم على تلك الوظائف التي تستغرق ساعات.

نصائح أخرى

لست متأكدا مما إذا كنت أفهم مشكلتك بشكل صحيح، لكنني أفترض أن لديك "وظائف" متعددة يمكنها تشغيلها في وقت واحد وأريدها إظهارها على صفحة الويب سواء كانت كاملة أم لا؟

عند تشغيل الوظيفة صفحة الويب (Python & Mod_WSGI على سبيل المثال) ستشعل برنامج نصي Python الذي من شأنه أن يدخل الوظيفة، دعنا نقول قاعدة بيانات SQLite وتشغيل المهمة، بمجرد اكتمال المهمة، يقوم البرنامج النصي بتحديث إدخال المهمة بحيث تم وضع علامة كاملة

ستظهر صفحة الحالة فقط الأشياء من SQLite.

ما تريد وضعه في DB بالإضافة إلى معرف العمل وربما أوقات البدء / النهاية يعتمد على ما تريد إظهاره في صفحة ويب حالة عملك

على Sidenote - إذا كانت "الوظائف" هي المجموعات، وتلبية هدسون

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top