node.js - www heroku com login




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

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

$ heroku run node yourScript.js

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

node yourScript.js

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

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


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

  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.

worker.js الأفضل هي تحديد ملف جدولك الزمني الذي يسمى على سبيل المثال worker.js بالمحتوى التالي:

function sayHello() {
    console.log('Hello');
}
sayHello();

ثم في الجدول heroku ، أنت فقط تكتب node worker كما تعرفه في Procfile وهذا كل شيء!


قم <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. تمكنت من العمل بها بعد بعض التجربة والخطأ. آمل أن يساعد هذا.





scheduler