تشغيل المهام عندما تكون قاعدة البيانات مجانية على Ruby on Rails Heroku

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

سؤال

لدي تطبيق Ruby on Rails الذي يستخدم Heroku.أحتاج إلى تشغيل أشياء مثل مهام الاستيراد/التصدير على قاعدة البيانات الخاصة بنا والتي تعمل على قفل النظام بأكمله نظرًا لأنها ثقيلة جدًا على قاعدة البيانات.هل هناك طريقة لإخبار النظام بتشغيل هذه المهام فقط عندما لا يتم استخدام قاعدة البيانات في تلك اللحظة؟

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

المحلول

لا توجد طريقة مدمجة لجدولة مهمة مثل هذه.هناك بعض الأشياء التي يمكنك القيام بها، بالرغم من ذلك.

  • قم بجدولة المهام ليتم تشغيلها خلال الساعات الأقل ازدحامًا في اليوم.سيعتمد ذلك على عملك وقاعدة عملائك وما إلى ذلك، ولكن نأمل أن تكون هناك نافذة أكثر ملاءمة من غيرها.

  • يمكنك كتابة مهمتك المجمعة لتستمر لفترة أطول، مع القيام بوحدات صغيرة من العمل.بين كل وحدة عمل، نم لبضع ثوان، أو قم بإلقاء نظرة على متوسط ​​الحمل الحالي وقرر ما يجب فعله بناءً على ذلك.وهذا من شأنه أن يقلل من تأثير الوظائف المجمعة.

  • اطلب من موقع الويب تحديث "القفل" في مكان ما، إما في قاعدة البيانات أو في ذاكرة تخزين مؤقت أو شيء من هذا القبيل.إذا كان استخدامك العادي لموقع الويب يقوم بتحديث قاعدة البيانات، فيمكنك الاطلاع على قاعدة البيانات الحالية updated_at.ثم قم بإجراء العمل المجمع فقط عندما لا يكون هناك أي نشاط لفترة من الوقت.لا يضمن هذا عدم ظهور مستخدم جديد في نفس الوقت الذي يتم فيه تشغيل المهمة المجمعة، بالطبع، ولكنه قد يكون وسيلة للعثور على نافذة يكون فيها الموقع أقل استخدامًا.

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