pfaffman
(Jay Pfaffman)
1
لذا لدي إضافة تقوم بتشغيل Ansible لتنفيذ تثبيت Discourse (أريد حقًا حقًا التوقف عن استخدام WordPress لأخذ طلبات التثبيت!).
في البداية، كنت أستخدم fork لتشغيل العملية، وهو ما عمل بشكل جيد في الاختبارات، لكنني اعتقدت أنه يجب عليّ فعل ذلك بطريقة “Discourse” أكثر.
لذلك قمت بإنشاء مهمة لمرة واحدة لتشغيل العملية، لكنها تُقتل بهذه الطريقة:
E, [2020-12-16T12:53:39.662683 #3158277] ERROR -- : worker=0 PID:3158425 timeout (61s > 60s), killing
حاولت إضافة sidekiq_options queue: 'low' إلى الفئة، ثم إلى الدالة التي تشغل المهمة.
ثم تخطيت جعل المهمة تشغل العملية، وقمت بتشغيلها مباشرة في النموذج باستخدام:
Discourse::Utils.execute_command(*instructions)
تعمل بشكل ممتاز إذا قمت بتشغيلها من rails c، ولكن مهما حاولت تشغيلها (هذا بيئة تطوير على Ubuntu، تم تشغيلها باستخدام ./bin/unicorn)، فإنها تُقتل.
إعجاب واحد (1)
Falco
(Falco)
2
الوظائف لمرة واحدة هي وظائف تُنفذ مرة واحدة فقط. يبدو أن ما تحتاجه هو وظيفة عادية يتم جدولتها بواسطة مُفعِّل، مثل طلب يصل إلى وحدة تحكم.
يمكن أن تكون الوظائف العادية أطول من 60 ثانية، كما يحدث في بعض الحالات أثناء الاستخدام العادي.
إعجاب واحد (1)
pfaffman
(Jay Pfaffman)
3
حسنًا، قمت بنقله إلى وظيفة عادية وحاولت تشغيله باستخدام ./bin/rails s بدلاً من ./bin/unicorn، ولا يزال الأمر دون جدوى.
هذا لا معنى له لأنني أعرف أن العديد من تلك الوظائف تستغرق أكثر من دقيقة.
Falco
(Falco)
4
كيف تقوم بتشغيل المهمة بالضبط؟ هل يمكنك لصق الجزء ذي الصلة من كود Ruby؟
Falco
(Falco)
6
إعجابَين (2)
pfaffman
(Jay Pfaffman)
7
ولهذا السبب أحتاج إلى طرح الأسئلة! لأنني مجرد إنسان بدائي. (لا قصد بالإساءة إلى أي شخص يعيش في كهف.)
بالطبع، لا يوجد سبب محدد. لم أستطع ببساطة معرفة كيف يُفترض بي أن أستخدمه!
شكرًا جزيلاً!
… وما زال يعمل! …
شكرًا جزيلاً. استغرق هذا الأمر بضع ساعات على الأقل…
الخطوة التالية: تشغيله على خادم إنتاج حقيقي…
4 إعجابات