คำถามนี้เป็นปัญหาที่ไม่ชัดเจน - ขออภัยที่ยาว ฉันกำลังพยายามปรับใช้แอปกับ Heroku แอปนี้เรียกใช้ Rserve ซึ่งเป็นภูตของภาษา R สำหรับการเรียกใช้รายงานทางสถิติ โดยหลักการแล้วสิ่งนี้ไม่น่าจะยากไปกว่าการได้รับ daemon ใดๆ เช่น memcached เพื่อทำงานใน Heroku
ใน Mac OSX ฉันเพิ่งเริ่ม daemon ในบรรทัดคำสั่งแล้วลืมมันไป - ทุกอย่างทำงานได้ดี ฉันกำลังเชื่อมต่อกับ Rserve จาก node.js โดยใช้ https://github.com/albertosantini/node-rio (ไม่ใช่ปัจจัยที่นี่)
แต่ในการปรับใช้กับ Heroku โชคไม่ดีนัก ฉันใช้ มัลติแพ็ก จาก R และ node. การติดตั้งดำเนินไปด้วยดี ขั้นตอนการสร้างทั้งหมดออกจากระบบได้ ส่วน R เริ่มทำงานได้ดี
ตอนนี้มาถึงงานในการเริ่มต้น Rserve daemon บน dyno ของผู้ปฏิบัติงาน
โปรไฟล์ของฉันมีลักษณะดังนี้:
web: node server.js
worker: R CMD Rserve --no-save
เมื่อฉันเรียกใช้ ฉันได้รับข้อผิดพลาดต่อไปนี้ในบันทึก (เลื่อนไปที่ท้ายบล็อก):
Rserv started in daemon mode.
heroku[worker.1]: State changed from starting to crashed
เอกสารการกำหนดค่า Rserve() อยู่ที่นี่: http://www.rforge.net/Rserve/doc.html ฉันไม่เชี่ยวชาญในการกำหนดค่า แต่อาจมีบางอย่างในนั้นที่ฉันควรทำเพื่อให้มันทำงานในสภาพแวดล้อมนี้ได้
สิ่งที่แปลกประหลาดคือคุณสามารถเรียกใช้สิ่งนี้ได้โดยไม่มีข้อผิดพลาดจากคอนโซลการเรียกใช้ Heroku แต่ (ดูด้านล่าง) ดูเหมือนว่าจะไม่ทำงานจริงเมื่อฉันพยายามเข้าถึงจาก node.js:
heroku run R CMD Rserve
[กู้คืนพื้นที่ทำงานที่บันทึกไว้ก่อนหน้านี้แล้ว]
Rserv เริ่มต้นในโหมด daemon >
ใน node.js (heroku run node
) ฉันลองทดสอบดังนี้:
var rio = require('rio');
rio.evaluate("pi / 2 * 2");
ซึ่งทำให้เกิดข้อผิดพลาด "การโทรสำรองล้มเหลว"
สิ่งนี้ทำให้ฉันคิดว่ามีบางอย่างผิดปกติโดยพื้นฐานกับสิ่งที่ฉันพยายามทำหรือวิธีที่ฉันพยายามทำ
childProcess.exec('R CMD Rserve --save', function (error, stdout, stderr) {});
- person metalaureate   schedule 22.07.2013