لماذا أحصل على مستوى المكدس عميقًا جدًا أثناء تشغيل وظيفة باستخدام stike-status؟
-
29-09-2019 - |
سؤال
إليك تتبع المكدس الذي يظهر على واجهة Resque-Web: http://gist.github.com/396893
هناك يمكنك التحقق من بعض إصدارات GEM التي كنت أستخدمها.
لقد قمت الآن ببعض الترقيات التي تحاول حل المشكلة ، وهنا إصدارات GEM الحالية:
ريديس (2.0.3)
Redis-Namespace (0.5.0)
Redisk (0.2.1)
Resque (1.9.5)
جدولة resque (1.9.2)
Resque-Status (0.1.4)
لقد كتبت أيضًا عاملًا بسيطًا للغاية لتجاهل أي أخطاء برمجة من جانبي ، ولكن أيضًا دون أي نجاح. رمز عامل الاختبار هو (على الرغم من أن الخلل يحدث مع أي رمز باستخدام resque-status التي جربتها):
class SimpleStatusWorker < Resque::JobWithStatus
def perform
60.times do |i|
sleep 1
at(i,60,"At #{num} of #{total}")
end
end
end
(يتم تحميل التهيئة المناسبة في تهيئة بيئة القضبان).
المحلول
لا ، الأمر لا يتعلق بـ IIS. إنه عن فلاد. يعرّف VLAD طريقة "GET" بواسطة eval على Rake_remote_task.rb (السطر ~ 12). هذا يخلق طريقة "الحصول" في سياق الكائن. نظرًا لأن طريقة Redis "GET" لم يتم تعريفها (يطلق عليها Method_missing) ، فإنها تعمل على تشغيل طريقة VLAD. نظرة:
eval "def get n يضع 'yo' n end"
فئة فو ؛ نهاية
foo.new.get
=> يو
غريب ليس؟
نصائح أخرى
ربما شيء مع تكوين IIS؟