معالجة الصور على خادم ويب
-
21-12-2019 - |
سؤال
أريد تشغيل Image معالجة Algos على الخادم الذي يمكن أن يتفاعل بسهولة مع تطبيقات الويب.تقوم شركة Algos معالجة الصور بحسب ثقيل ولن تكون متاحة في المكتبات المدمجة المخصصة.حاليا أستخدم Ruby على القضبان على Heroku لموقع الويب الخاص بي.
ماذا سيكون أفضل بنية لتحقيق ذلك؟التقاط صور من موقع الويب - تشغيل الصورة معالجة Algo على ذلك - عرض مرة أخرى على الموقع
معظم رمز معالجة الصور الخاص بي موجود على C / C ++.
هل يمكنني الاتصال برمز C / C ++ من Ruby On Rails مباشرة؟هل هذا ممكن في هيروكو؟
أو يجب أن أقوم بتصميم نظام يكشف رمز C / C ++ بعض واجهات برمجة التطبيقات التي يمكن استدعاؤها بواسطة Ruby On Rails Server؟
المحلول
يستخدم Heroku مثيلات آلة ظاهرية صغيرة صغيرة، لذلك اعتمادا على مدى ثقيلة معالجةك، فقد لا يكون أفضل خيار للهندسة المعمارية. ومع ذلك، إذا كنت تستخدمه، فسأفعل هذا:
استخدم جوهرة مهام الخلفية للقيام بمعالجتك. لديك هذا يعمل على عملية منفصلة (يسمى عامل بدلا من Dyno في مصطلحات Heroku). المهمة المتأخرة هي حل مجربة ومختبرة لمهام الخلفية مع ثروة من المعلومات عبر الإنترنت المتعلقة بدمجها في Heroku، ولكن هناك أحدث مثل Sidekiq والتي تستخدم نظام الخيوط الجديد في الإصدارات الحديثة من Ruby. سيسمحون بكل شيء يتعين القيام به في Dyno، لكنني سأقول أنه سيكون من المفيد الحفاظ على جميع معالجة الخلفية بعيدا عن Dynos WebServer، لذلك تأخر الوظيفة (أو ما شابه).
أما بالنسبة للدمج C / C ++، لم أكن بحاجة للقيام بذلك حتى الآن. ومع ذلك، أعرف أنه من الممكن إنشاء الأحجار الكريمة التي تدمج رمز C أو C ++ وتجميعها أصلا. طالما كنت تستخدم Ruby بدلا من Jruby، لا أعتقد أن Heroku يجب أن يكون لديك مشكلة معهم. هناك طرق أخرى لإنجاز هذا، انظر إلى الأسئلة الخاصة به على وجه التحديد حول هذا الموضوع، مثل
href="https://stackoverflow.com/Questions/1542520/how-can-i-call-c-functions-from-within-ruby"> كيف يمكنني الاتصال بوظائف C ++ من داخل Ruby
يبدو أنك بحاجة إلى إنشاء ملحق، ثم قم بإنشاء جوهرة لاحتواءه. قد تساعد هذه الروابط أو لا تساعد.
http://www.rubyinside.com/how-to-create-a-ruby-Extension-in-c-in-c-c-c-in-care-5-minutes-100.html
http://guides.rubygems.org/gems-with-extensions/ هذا >
ثم يمكن أن يطلب خادم الويب مهمة خلفية لمعالجة الصورة.
بالطبع، هناك العديد من الطرق الأخرى لإنجاز هذا، اعتمادا على عدد من العوامل.