Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Zeromq推/拉入Django_Python_Django_Django Views_Zeromq_Pyzmq - Fatal编程技术网

Python Zeromq推/拉入Django

Python Zeromq推/拉入Django,python,django,django-views,zeromq,pyzmq,Python,Django,Django Views,Zeromq,Pyzmq,我试图在Django中实现ZeroMQ推拉事件管理。基于,我将创建一个推送客户端,如下所示: context = zmq.Context() zmq_socket = context.socket(zmq.PUSH) zmq_socket.connect("tcp://127.0.0.1:5557") for num in xrange(20000): work_message = { 'num' : num } zmq_socket.send_json(work_message

我试图在Django中实现ZeroMQ推拉事件管理。基于,我将创建一个推送客户端,如下所示:

context = zmq.Context()
zmq_socket = context.socket(zmq.PUSH)
zmq_socket.connect("tcp://127.0.0.1:5557")
for num in xrange(20000):
    work_message = { 'num' : num }
    zmq_socket.send_json(work_message)
和拉式服务器,如:

context = zmq.Context()
consumer_receiver = context.socket(zmq.PULL)
consumer_receiver.bind("tcp://127.0.0.1:5557")
work = consumer_receiver.recv_json()
data = work['num']
print data

在单独的文件中实现PUSH/PULL很好。但是我想要Django视图中的PULL服务器功能。也就是说,每当接收到消息时,我希望它在Django上被接收,并且我可以操作Django ORM。我该怎么处理?谢谢

不确定您是否在询问如何在使用ZMQ的脚本中包含Django,但下面是我如何做到的(使用virtualenv)


不知道你在问什么。。你想知道如何在你的脚本中包含Django,这样你就可以使用ORM了吗;没有
循环。@Pant,它需要一个持续运行的程序(守护进程)。否则它无法打开端口并侦听。
#!/usr/bin/python2.7
import sys
import os

PATH=os.path.abspath(os.path.dirname(__file__))

# Relative path to the virtual environment
# (relative to the stand-alone script)
rel_path = '../../bin/activate_this.py'
activate_this = os.path.join(PATH, rel_path)
# this is needed to read the settings:
sys.path.append("../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mainapp.settings")
execfile(activate_this, dict(__file__=activate_this))

import zmq
import json
from django.conf import settings
import django
django.setup()
from .models import Mymodel

port = "5556"
context = zmq.Context()
print "Connecting to server..."
socket = context.socket(zmq.REQ)
socket.connect ("tcp://localhost:%s" % port)

while True:
    #this will listen and wait for a message 
    mymessage = json.loads(socket.recv())

    try:
        #do stuff
        my = Mymodel.objects.get(id=mymessage['id']) 

        #send something back 
        socket.send("1")               
    except:
        #on error
        socket.send("0")