2012-04-12 10 views
5

मैं एक अजवाइन सर्वर है कि अपने आवेदनमुझे अजवाइन कार्य के अंदर अपने रेडिस कनेक्शन को कैसे संभालना चाहिए?

class IncrementStatsCounterTask(Task): 
    def run(self, count, shortcode, stat_type, operator_id, date, **kwargs): 
     r_server = redis.Redis(settings.REDIS_HOST) 
     key = key_mask % { 
      'shortcode': shortcode, 
      'stat_type': stat_type, 
      'operator_id': operator_id, 
      'date': date.strftime('%Y%m%d') 
     } 

     return key, r_server.incr(key, count) 

यह सब अच्छा काम करता है के लिए कुछ काउंटरों संभालती है, लेकिन इस खोलता है और redis कनेक्शन हर बार मेरी कार्य, चलाता है बंद कर देता है। क्या कनेक्शन को संभालने का कोई बेहतर तरीका है? हो सकता है कि लगातार कुछ प्रकार का कनेक्शन हो?

मैं चल रहा हूँ नवीनतम Django-अजवाइन

उत्तर

1

python redis library में आप कनेक्शन पूलिंग का उपयोग कर सकते हैं। बस अपने मॉड्यूल में से एक में वैश्विक रूप से पूल बनाएं और प्रत्येक नए कनेक्शन के लिए इसका इस्तेमाल करें।

+1

और क्या यह ऑब्जेक्ट मेरे अजवाइन श्रमिकों में साझा किया जाएगा? – armonge

+1

ऐसा मत सोचो। लेकिन यह एक कार्यकर्ता में सभी कार्यों में साझा किया जाएगा। – ilvar

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