Пример #1
0
 def manageQueue(self, data):
     fail=0
     x=0
     resp=""
     links=[]
     # TODO: make sure to save which urls linked to where
     if "<add|" in data or "<done|" in data:
         print "adding items to queue..."
         for packet in data.strip("\n").split(">|"):
             if len(packet)>0:
                 bits = packet.strip().strip("<").strip(">").split("|")
                 if bits[0] == "add":
                     if bits[2]=="":
                         print "blank field in bits[2]",bits
                     else:
                         res = self.mt.insertQueue(bits[1],int(bits[2]))
                         if res < 0:
                             print "issue inserting into database.."
                             fail+=1
                         else:
                             links.append(bits[1])
                         x+=1
                 elif bits[0] == "done":
                     res = self.mt.markDone(bits[1], links)
                     print bits[1]," marked done."
                 else:
                     print "not yet implemented |",packet,"|"
                     
         resp = "Items added: %d/%d" % ((x-fail),x)
     elif "<request|" in data:
         # we are locking here to pass back and forth a singleton
         #    containing one instance of mongoTools so that when
         #    we are requesting TODOs, we can iterate over the
         #    cursor returned to us by the DB without loosing track
         #    of where we are.
         singleMongoTools=singletonObj.singletonObj()
         queueLock.acquire()
         try:
             
             bits = data.strip('<>\n').split("|")
             if bits[0] == "request":
                 print "processing request.."
                 resp = singleMongoTools.mt.requestURLs(int(bits[1]))
             else:
                 resp = "malformed packet: ",data
         finally:
             queueLock.release()
     else:
         resp = "malformed packet: ",data
         
     return resp
Пример #2
0
#!/usr/bin/env python

import socket
import threading
import SocketServer
import sys
import signal
import mongoConfig as mc
import mongoTools
import singletonObj

queueLock = threading.Lock()
server=""
firstInst=singletonObj.singletonObj()

#SocketServer.BaseRequestHandler
class ThreadedTCPRequestHandler(SocketServer.StreamRequestHandler):
    def __init__(self, request, client_address, server):
        self.mt = mongoTools.mongoTools(mc.usr,mc.pw,mc.url,mc.port,mc.dbname)
        SocketServer.StreamRequestHandler.__init__(self, request, client_address, server)
        # http://blog.pythonisito.com/2012/01/getting-started-with-mongodb-and-python.html
        
    def handle(self):
        data = self.rfile.readline()
        resp = self.manageQueue(data)
        self.request.send(resp)
    
    def manageQueue(self, data):
        fail=0
        x=0
        resp=""