كيف تتأكد من أن مهمة أشعل النار واحدة فقط تعمل في وقت واحد؟

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

سؤال

أريد إعداد مهام Rake لتشغيل عبر كرون. هذا أمر سهل ، لكن ما ليس من السهل هو ضمان تشغيل نسخة واحدة فقط من مهمة Rake في وقت واحد. أتصور أنه يمكنني استخدام PS على النظام للتحقق ثم الخروج من مهمة RAKE إذا كان قيد التشغيل بالفعل ، أو يمكنني القيام بهيكل عمل متأخر حيث أقوم بتسلسل اسم المهمة وعند الانتهاء ، أزيلها من DB ، ولكن بماذا توصون؟

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

المحلول

حلت UNIX هذه المشكلة مع ملفات PID. توجد ملفات PID في /var /تشغيل وتحتوي على معرف عملية البرامج. ها هي صفحة الرجل: http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi؟pidfile+ 3

قد تجدها قديمة بعض الشيء (وأنا أوافق) ، لكنها طريقة مستخدمة ومثبتة في كثير من الأحيان.

نصائح أخرى

يمكنك استخدام https://rubygems.org/gems/only_one_rake, ، مثل مساحة الاسم: Rails DoC "عدد المستخدمين عبر الإنترنت" only_one_task: online_user_count =>: البيئة do loop {OnlineUser.count ؛ النوم 1} نهاية النهاية

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