www باستخدام Heroku جدولة مع Node.js




www heroku com login (4)

الخطوات التالية تعمل في وضعي.

  1. في المجلد الجذر إضافة ملف worker.js .
  2. في worker.js. اكتب وظيفة بسيطة ، مثل أعلاه. function sayHello() { console.log('Hello'); } sayHello();
  3. انتقل إلى إضافات Heroku Scheduler. انقر فوق "إضافة مهمة جديدة" واكتب "عامل" في الحقل. ثم قم بتعيين الفاصل الزمني وانقر فوق حفظ.

هنا شيء يجب أن تلاحظ

  1. بعد إعداد يعمل التحديث. إذا كنت تستخدم المثال أعلاه ، يمكنك استخدام heroku run node worker.js لمعرفة ما إذا كان يعمل. يجب أن تظهر "Hello" في جهازك.
  2. يمكنني استخدام كاتب express-babel لمشروع بلدي node.js.

لا يوجد حرفياً أي برنامج تعليمي حول استخدام Heroku Scheduler مع Node.js. افترض أن لدي وظيفة تسمى sayHello () وأرغب في تشغيلها كل 10 دقائق. كيف يمكنني استخدامه في جهاز التحكم. في ruby ​​تكتب rake function_name () ولكن لا يوجد تفسير للعقدة. هل يمكنني كتابة "/ sayHello" أو ينبغي علي القيام بتكوين إضافي؟


قم <project_root>/bin/say_hello الملف <project_root>/bin/say_hello :

#! /app/bin/node
function sayHello() {
  console.log('Hello');
}
sayHello();
process.exit();

نشر إلى Heroku واختبارها مع $ heroku run say_hello ثم إضافته إلى جدولة مع اسم المهمة say_hello .

تفسير

خذ say_hello.js كمثال على البرنامج النصي Node.js الذي تقوم بتشغيله عادةً باستخدام $ node say_hello.js .

تحويلها إلى برنامج نصي من قبل

  1. إزالة .js المنتهية
  2. إدراج "shebang" في الجزء العلوي: #! /app/bin/node #! /app/bin/node [1] [2]
  3. نقلها إلى مجلد bin [3]

[1] اقرأ عن shebang على ويكيبيديا .
[2] تم تثبيت node التنفيذية في app/bin/node على Heroku. يمكنك التحقق من ذلك عن طريق تسجيل الدخول إلى باش على هيروكو مع $ heroku run bash ثم يسأل $ which node .
[3] يتطلب Heroku وضع البرامج النصية في دليل bin . انظر تحديد المهام في مركز Dev Heroku.

أوافق على أن وثائق Heroku الخاصة بمهام الجدولة ليست واضحة لأي شيء آخر غير نصوص Ruby. تمكنت من العمل بها بعد بعض التجربة والخطأ. آمل أن يساعد هذا.


أنا مرتبك أن لا أحد حاول:

$ heroku run node yourScript.js

لذا ضع هذا في Heroku Scheduler

node yourScript.js

عملت بالنسبة لي.


عملت إجابة كريستوف بالنسبة لي حتى كنت بحاجة إلى تمرير معلمة إلى البرنامج النصي ، وعندها فشل. المشكلة هي أنه لا يجب تحديد node في المهمة. إليك كيفية تشغيله تمامًا:

  1. في Procfile ، حدد نوع عملية للنص البرمجي الخاص بك. انظر أدناه للحصول على Procfile نموذجي مع عملية ويب ، ولتشغيل "schedule_job.js" ، نوع عملية ثانية مبدعة باسم "عامل".

    web: node app.js
    worker: node scheduled_job.js
    
  2. في عمود مهمة جدولة Heroku ، فقط أدخل اسم نوع العملية ("العامل" في هذا المثال) مع أو بدون معلمات. لا تدخل "عقدة" قبل ذلك . يعرض Heroku علامة الدولار أمامه ، لذلك فإن أمثلة على إعداد صالح سيكون $ worker (تشغيل بدون وسيطات) أو $ worker 123 abc (لتنفيذ sched_job.js مع الوسيطتين "123" و "abc")





scheduler