How do I send a POST request as JSON using Python?

Keep in mind you can probably accomplish this better with curl. But if you must use Python, this is absolutely the easiest way I’ve found to do this:

# import json module - will only be available for Python 2.7+
import json

# Build a json data structure:
data = {
'username' : 'admin',
'password' : 'admin',
'other' : 'blah',
}

# Creates the request and adding a json header
req = urllib2.Request('http://acme.com/api/posts/create')
req.add_header('Content-Type', 'application/json')

# Getting the response object
response = urllib2.urlopen(req, json.dumps(data))
print response.read()

Remember that your response.read() will be in string format. So you may get a string output that looks like so:

{"output1":"some stuff","output2":"some more stuff"}

So that you can access say ‘output2′ variable directly, you may need to do something like:

print response.read().split(':')[2]

A few extra places to read about:

How do I increase MySQL’s connection limit?

First, a warning: Before you increase MySQL’s connection limit, you should try to find out why you reached the max number of connections. Most of the time, the problem is in the code. You may have to ask yourself if you really need to write a threaded script.

In case you do need to use threading in your script, do this:

MySQL’s default configuration sets the maximum simultaneous connections to 100. If you need to increase it, you can do it fairly easily:

Open /etc/my.cnf with an editor:

# vi /etc/my.cnf

Beneath the [mysqld] stanza add:

max_connections = 250

Restart MySQL afterwards and verify with:

# echo "show variables like 'max_connections';" | mysql

This will show the new value for max_connections.

A few other links to read:

Rsync tutorial: How can I keep two computers’ data synched?

You can use rsync of course. It is very simple to use.

Make sure you have it installed. On a RHEL box you can do: sudo yum install rsync or on an Ubuntu box you can do sudo apt-get install rsync. This can even be done on a Windows box but you will need to have Cygwin installed. On Windows once you have Cygwin installed you can install SSH and Rsync on it.

Next, make sure you have ssh installed. Here is how to do it with Ubuntu: link. With RHEL you can do: sudo yum install ssh.

Make sure you can ssh from the source box to the target server. If you need help doing this, see this link.

Next you can run these commands:

rsync –verbose –progress –stats –compress –rsh=/usr/local/bin/ssh \
–recursive –times –perms –links –delete \
–exclude “*bak” –exclude “*~” \
/www/* webserver:simple_path_name

  • –verbose : shows a lot of information
  • –progress : shows progress in percentage of time almost completed
  • –stats : shows amount of time taken and time sped up
  • –compress : compresses data so that it can be sent faster
  • –rsh : tells which login program you’re going to use — in our case this is ssh.
  • –recursive : tells rsync to sync up subfolder data as well
  • –times : preserves time stamp of files and folders for the new server
  • –perms : preserves permissions of files and folders for the new server
  • –links : copies over symbolic links
  • –deletes : will delete files on the target server if they do not exist on the source server
  • –exclude “[filename]” : will not sync a file/folder given here

A few other resources: