मैं आइटम अनुरोध/प्रतिक्रिया चक्र के बाहर संसाधित करने की आवश्यकता है कि क़तार में एक तूफान वेब सर्वर का उपयोग कर रहा में एक प्रसंस्करण कतार बना रहा है।तूफान
नीचे मेरी सरल उदाहरण में, हर बार एक अनुरोध में आता है, मैं एक नया स्ट्रिंग queued_items
नामक एक सूची में जोड़ें। मैं ऐसा कुछ बनाना चाहता हूं जो उस सूची को देखे और आइटम को संसाधित करे जैसा कि वे इसमें दिखाई देते हैं।
(मेरे असली कोड में, आइटम संसाधित हो जाते हैं और एक टीसीपी सॉकेट पर भेजे जाते हैं जो वेब अनुरोध आने पर कनेक्ट हो सकता है या नहीं भी हो सकता है। मैं चाहता हूं कि वेब सर्वर सॉकेट कनेक्शन के बावजूद आइटम कतार में रखे)
मैं इस कोड को सरल बनाए रखना और Redis या बीनस्टॉक जैसे बाहरी कतारों/कार्यक्रमों का उपयोग नहीं कोशिश कर रहा हूँ। यह बहुत अधिक मात्रा में नहीं होने वाला है।
तूफान मुहावरे का उपयोग कर नए आइटम के लिए client.queued_items
सूची देख सकते हैं और उन्हें कार्रवाई करने के लिए आते ही उन्हें एक अच्छा तरीका क्या है?
import time
import tornado.ioloop
import tornado.gen
import tornado.web
class Client():
def __init__(self):
self.queued_items = []
@tornado.gen.coroutine
def watch_queue(self):
# I have no idea what I'm doing
items = yield client.queued_items
# go_do_some_thing_with_items(items)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
client.queued_items.append("%f" % time.time())
self.write("Queued a new item")
if __name__ == "__main__":
client = Client()
# Watch the queue for when new items show up
client.watch_queue()
# Create the web server
application = tornado.web.Application([
(r'/', IndexHandler),
], debug=True)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
यह मैं वास्तव में क्या जरूरत है। मुझे यह दिखाने के लिए धन्यवाद कि इसे कैसे कार्यान्वित किया जाए। – Scott
डैनो - मैं कतार को कैसे देख सकता हूं? जब मेरा कनेक्शन खराब हो जाता है, तो मुझे अस्थायी रूप से कतार में वस्तुओं को संसाधित करना बंद कर देना होगा, लेकिन उन्हें खोना नहीं होगा। – Scott
टोरो को टर्ननाडो में विलय कर दिया गया है और अब इसे हटा दिया गया है। टॉरनाडो के लिए> = 4.2 आप 'tornado.queues.Queue' –