1

我刚刚开始使用 django。在我的开发环境中,我使用以下方法启动 django 服务器:

python manage.py runserver 0.0.0.0:8000

并且我的 Web 应用程序按预期工作,但我也有很多错误......但到目前为止,我想在服务器初始化上运行一个后台线程,我需要一些指导。

这是我要添加的线程代码:

def synchronized(L):
    def lock_around(f):
        def locked(*a, **k):
            with L:
                return f(*a, **k)
        locked.__name__ = f.__name__
        locked.__doc__ = f.__doc__
        return locked
    return lock_around


class ProcessMsgQueue:

    def __init__(self):
        try:
            print "jaojdajdoaj"
            self.dataCounter = 0
            self.errorCounter = 0
            self.setupQueueTable()
            self.wrapperFuns = structureWrapper.WrapperClass()
            msgStruct = MsgStruct()
            self.VerifyMsgQueue()
        except:
            raise

    def setupQueueTable(self):
        self.hash_object = QueueHandler("queue_details")
        self.hash_object.EnableListener()
        self.hash_object.createNewHashRef()
        self.hash_object.create("dataMsgQueue")
        self.hash_object.create("errorMsgQueue")

    @synchronized(lock)     
    def pendMessage(self):
        print "pendMsg"
        try:
            res_mq = posix_ipc.MessageQueue(RESPONSE_QUEUE_NAME)
            res_msg = None
            res_msg,t_size = res_mq.receive()
            #print res_msg.encode('hex')
            return res_msg
        except Exception as e:
            print e
            raise
        finally:
            res_mq.close()

    def VerifyMsgQueue(self):
        while(self.hash_object.Queuelisten):
            try:
                posixQueueMessage=self.pendMessage()
                if not posixQueueMessage == None:
                    msgStruct = None
                    msgStruct = MsgStruct()
                    self.wrapperFuns.memCopy(posixQueueMessage,msgStruct)
                    if(msgStruct.msgType == palMsgType["DOOR_OPEN_INSERVICE_MSG"]):
                        print "Added Error to hastable"
                        self.hash_object.set("errorMsgQueue",self.errorCounter,msgStruct.msgBuf)
                    else:
                        print "Added Data to hastable"
                        self.hash_object.set("dataMsgQueue",msgStruct.msgType,msgStruct.msgBuf)
                    posixQueueMessage=None
            except:
                raise
4

1 回答 1

5

Try to call your init code from end of wsgi.py file. It will be executed once at start of server.

于 2013-01-31T16:47:39.253 回答