How to send request from one django server to another server

I have a django problem. I want to send datas which are from browser or business logic on my django server to another django server or just the same server but different port, to handle the request. How can I do? I have tried to achieve using socket,but it seems no working.

Following is my code:
accept the client's request:
def im(request):
    userp = None
    try:
        userp = UserProfile.objects.get(user = request.user)
    except:
        pass
    if not userp:
        return HttpResponse("error")
    print '111'
    if request.method == "GET":
        import json
        msg = json.loads(request.GET.get('msg'))
        try: 
            msg['from_id'] = userp.id
            if msg.get('type', '') == 'sync': #页面同步消息
                msg['to_id'] = userp.id
            push_msg(msg)
            return HttpResponse("success")
        except:
            return HttpResponse("error")
        #return HttpResponseRedirect("http://127.0.0.1:9000/on_message")
    return HttpResponse("error")

helper.py:push_msg:
def push_msg(msg):
    print '111'
    params = str(msg)
    headers = {"Content-type":"application/x-www-form-urlencoded", "Accept":"text/plain"}
    conn = httplib.HTTPConnection("http://127.0.0.1:9000/push_msg/")
    conn.request("POST", "/cgi-bin/query", params, headers)

url(r'^push_msg/$', 'chat.events.on_message')
events.py:on_message
def on_message(request):
    msg = request.POST.get('msg')
    msg = eval(msg)
    try:
        print 'handle messages'
        from_id = int(msg['from_id'])
        to_id = int(msg['to_id'])
        user_to = UserProfile.objects.get(id = msg['to_id'])
        django_socketio.broadcast_channel(msg, user_to.channel)
        if msg.get('type', '') == 'chat':
            ct = Chat.objects.send_msg(from_id=from_id,to_id=to_id,content=data['content'],type=1)
            ct.read = 1
            ct.save()
    except:
        pass 

使用python requests模块来做这个请求,然后使用httplib2有更多的功能,并且它很容易使用http://docs.python-requests.org/


I have used httplib2 to accomplish something similar. From the httplib2 documentation try:

import httplib2
import urllib
data = {'name': 'fred', 'address': '123 shady lane'}
body = urllib.urlencode(data)
h = httplib2.Http()
resp, content = h.request("http://example.com", method="POST", body=body)

You should then be able to handle the POST in your second django server, and return the appropriate results to the first django server.

链接地址: http://www.djcxy.com/p/56544.html

上一篇: django发布回复令牌不发布数据

下一篇: 如何将请求从一台django服务器发送到另一台服务器