Re: Creating a WSGI Request for another uWSGI Django App
> Hello,
>
> You guys are always so helpful so I thought I'd come here with my
> crazy problem I'm trying to solve.
>
> I have a Django Application Cluster. We use subversion for our code.
> The only type of a post-commit hook we have is an HTTP Request with
> JSON at a URL we define. Essentially what I want to do is to use this
> post-commit hook to trigger a cluster-wise reload of the uwsgi
> service.
>
> The problem is that I don't really want to implement a fancy script
> that uses SSH or anything along those lines. First off, there are
> security issues. Secondly, I want it to be relatively quick and
> integrated into our app for easy replication as we add and remove
> nodes.
>
> I started off with some code -- just trying to play around the idea. I
> want to have two views. The first view is titled "svn_hook". This view
> is tied to the URL that is called from the post-commit hook by our SVN
> Hosting Provider. The second view is titled "uwsgi_reload".
>
> svn_hook()'s job is to simply open a connection with each of the nodes
> and call their uwsgi_reload() views. uwsgi_reload()'s job is to simply
> execute /etc/init.d/uwsgi... reload.
>
> Unfortunately, I have *no* idea how to get this thing to work. I tried
> approaching it with some RPC code in MoinMoin that I was forwarded to
> by a nice guy in #wsgi. But, as it turns out, I have no idea what I'm
> doing :)
>
> I think if I can get the servers to talk to each other, then I can
> handle the rest. If you guys have any ideas on either how to fix this
> code, or a better way of approaching this problem, I would really
> appreciate the input.
>
> By the way, I understand that WSGI is a completely different protocol
> from HTTP. I tried to understand the code the best I could and had no
> idea what was going on exactly with the key/value pairs I saw in the
> MoinMoin code. Hopefully someone can understand what I was trying to
> accomplish there
>
> Thanks again!
> -Kurtis
>
> from django.http import HttpResponse
>
> # View for URL Called by SVN on Post-Commit Hook
> def svn_hook(request):
>
> # Resources
> # import urllib # Used in example code, not here yet...
> from httplib import HTTPConnection
>
> # List of IP Addresses to Reload
> # <Real IP's Hidden>
> hosts = ('192.168.1.1', '192.168.1.2')
> port = '7999'
>
> # Hit the Server
> """
>
> Note:
> I was going to do more here ... but I can't
> even get the thing to work without stalling or throwing
> errors. I wanted to check for a 200 Status from each
> host and eventually log if any fail.
>
> """
> for host in hosts:
> client = HTTPConnection(host, port, False, 30)
> client.request("GET", '/reload')
> response = client.getresponse()
> body = response.read()
> body = body.decode('utf-8')
>
> # Done
> return HttpResponse(status = 200)
>
> # Temporarily set as /reload for testing purposes.
> def uwsgi_reload(request):
>
> # Execute /etc/init.d/uwsgi.... reload
> # and any other logic that may need to be performed
> # I'll do this later, after I get the actual WSGI call
> # working.
>
> return HttpResponse(status = 200)
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscribe@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>
Are your servers on a multicast-enabled network ?
If they are you can use this
http://projects.unbit.it/uwsgi/wiki/Clustering
Your svn hook will be only a one-line:
os.system("uwsgi --cluster-reload <address>")
--
Roberto De Ioris
http://unbit.it
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home