2011-11-14 15 views
5

मैं अजाक्स के माध्यम से लोड कुछ अमेज़ॅन उत्पादों को प्रदर्शित करना चाहता हूं।रेल - गैर अवरुद्ध HTTP अनुरोध?

मैं नीचे अजाक्स के साथ विधि को कॉल करता हूं, लेकिन अनुरोध में कुछ सेकंड लगते हैं।

@items = [] 
@shows.shuffle.first(5).each do |show| 
    req = AmazonProduct["us"] 
    req.configure do |c| 
     c.key = "###" 
     c.secret = "###" 
     c.tag = "###" 
    end 
    req << { :operation => 'ItemSearch', 
      :search_index => params[:product_type], 
      :response_group => %w{ItemAttributes Images}, 
      :keywords => show.name, 
      :sort => "" } 
    resp = req.get 
    @items << resp.find('Item').shuffle.first 
end 

मैंने यह नहीं देखा है कि यह क्रिया सर्वर को अवरुद्ध करती है। मैंने साइट को किसी अन्य टैब में खोलने का प्रयास किया है। वह टैब तब तक लोड नहीं हो जाएगा जब तक कि अजाक्स कॉल के साथ पहला टैब पूरा न हो जाए।

मैं इस समस्या को हल करने के बारे में कैसे जा सकता हूं?


सेटअप:

उबंटू 10.10
रेल 3.1.1
रूबी 1.9.2
रत्न: https://github.com/hakanensari/amazon_product

उत्तर

0

संपादित करें:

बस स्पष्ट करने के लिए, उस पर निर्भर सर्वर जो आप अपने विकास पर्यावरण में उपयोग करते हैं, यह रेल नहीं है।

वेबरिक (देव में डिफ़ॉल्ट http सर्वर) उस समय केवल एक अनुरोध को संभाल सकता है। जब आप अपना आवेदन तैनात करते हैं तो आपको प्यूमा, यूनिकॉर्न, फ़्यूज़न पैसेंजर या किसी अन्य सर्वर का उपयोग करना चाहिए जिसमें आपके अनुरोधों को संभालने वाली एक से अधिक प्रक्रिया (या धागा) हो।

पुराने उत्तर:

मुझे नहीं लगता कि इस रेल में संभव है।

तरह से मैं कैसे इस समस्या दृष्टिकोण हैं केवल उत्पादों है कि आप अमेज़न से चाहते प्राप्त करने में कठिनाई के लिए कार्रवाई की है कि एक साधारण sinatra-synchrony एप्लिकेशन तैयार करना है।

इस ऐप को AJAX अनुरोध भेजने में सक्षम होने के लिए, आपको इस ऐप को अपने डोमेन (सबडोमेन) पर इंगित करने की आवश्यकता है।

मुझे इस समय कोई अन्य समाधान नहीं दिख रहा है। बेशक आप अपने सर्वर पर एक से अधिक आवेदन प्रक्रिया कर सकते हैं, लेकिन यह आपकी समस्या को दीर्घ अवधि में हल नहीं करेगा।

तो लपेट के लिए:

AJAX -> amazon-producs-sinatra-app.yourdomain.com 
+0

ओह मिल जाएगा, यह कुछ हद तक निराशाजनक है :( – Frexuz

2

मैं इस ब्लॉक संदेह है क्योंकि आप, विकास मोड में अपने परीक्षण कर Webrick का उपयोग कर डिफ़ॉल्ट रेल तोड़, कर रहे हैं।

मेरी समझ यह है कि वीब्रिक एक समय में केवल एक अनुरोध को संसाधित कर सकता है (यही कारण है कि इसे उत्पादन के उपयोग के लिए सुझाव नहीं दिया जाता है)।

एक उत्पादन स्तर रेल तोड़, जैसे Phusion यात्री, या संकर जाति/पतली सर्वर का एक समूह, आप अपने संगामिति :)

संबंधित मुद्दे