<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HostingFu &#187; python</title>
	<atom:link href="http://hostingfu.com/tag/python/feed" rel="self" type="application/rss+xml" />
	<link>http://hostingfu.com</link>
	<description>Web Hosting Blog by a Software Developer</description>
	<lastBuildDate>Mon, 19 Jul 2010 09:27:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Quick Nginx Status Script</title>
		<link>http://hostingfu.com/article/quick-nginx-status-script</link>
		<comments>http://hostingfu.com/article/quick-nginx-status-script#comments</comments>
		<pubDate>Wed, 03 Jun 2009 08:52:15 +0000</pubDate>
		<dc:creator>scotty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://hostingfu.com/?p=189</guid>
		<description><![CDATA[Just to share another script that I hacked together to monitor my sites. Nginx is a great web server software and since I last wrote about it more than 2 years ago, I have since pretty much converted all my sites to Nginx (sorry Lighttpd). Nginx came with this HTTP stub status module that you [...]]]></description>
			<content:encoded><![CDATA[<p>Just to share another script that I hacked together to monitor my sites. <a href="http://nginx.net/">Nginx</a> is a <strong>great</strong> web server software and since I <a href="http://hostingfu.com/article/nginx-vs-lighttpd-for-a-small-vps">last wrote about it</a> more than 2 years ago, I have since pretty much converted <em>all</em> my sites to Nginx (sorry Lighttpd).</p>
<p>Nginx came with <a href="http://wiki.nginx.org/NginxHttpStubStatusModule">this HTTP stub status module</a> that you can get the current server status in a HTML page. However it&#8217;s <em>not pretty</em> comparing to Lighttpd&#8217;s and Apache&#8217;s. Moreover, the information it provides is a bit cryptic.</p>
<p><span id="more-189"></span></p>
<p>For example, when you browse to the stub status page (please refer to the wiki document linked earlier on how to set it up), all you get is 4 lines of text:</p>
<pre class="code">
$ curl http://myserver/nginx_status
Active connections: 183
server accepts handled requests
 914384 914384 2725561
Reading: 3 Writing: 2 Waiting: 178
</pre>
<p>Not very meaningful. Instead, I wrote a small Python script (download here: <a href="http://hostingfu.com/files/nginx/nginxstats.py"><b>nginxstats.py</b> (2.3kb)</a>) that does something like this:</p>
<pre class="code">
$ ./nginxstats.py http://myserver/nginx_status
Conn     Conn/s     Request/s  Read  Write Wait
-------- ---------- ---------- ----- ----- -----
     157       9.57      31.07     0     2   155
     140      10.20      36.13     0     1   139
     147       9.33      33.60     0     4   143
     189      12.60      40.07     1     4   184
     164      13.07      41.53     5     2   157
</pre>
<p>Basically it fetches the data from the stub status page every 30 seconds (configurable in the script) and then do some calculation to find out how many connections have been established within the time frame, and what&#8217;s the average connections/second and requests/second. Similar to tools like <code>vmstat</code>, it basically runs continuously (until interrupted).</p>
<p>Very <em>useful</em> when you are getting slashdotted :)</p>
]]></content:encoded>
			<wfw:commentRss>http://hostingfu.com/article/quick-nginx-status-script/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Keeping Your PHP/FastCGI Processes Alive</title>
		<link>http://hostingfu.com/article/keeping-your-php-fastcgi-processes-alive</link>
		<comments>http://hostingfu.com/article/keeping-your-php-fastcgi-processes-alive#comments</comments>
		<pubDate>Sat, 30 May 2009 04:10:08 +0000</pubDate>
		<dc:creator>scotty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://hostingfu.com/?p=188</guid>
		<description><![CDATA[A few days ago I spotted this forum post on Linode Forum &#8212; someone&#8217;s Nginx to PHP FastCGI set up kept on throwing 502 Gateway Error after a few days. I have a mystery and I&#8217;m not sure how to solve it. My 360 Linode is running several WordPress-based sites using nginx. Everything is great, [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago I spotted <a href="http://www.linode.com/forums/viewtopic.php?t=4234">this forum post</a> on Linode Forum &#8212; someone&#8217;s Nginx to PHP FastCGI set up kept on throwing <b>502 Gateway Error</b> after a few days.</p>
<blockquote><p>I have a mystery and I&#8217;m not sure how to solve it. My 360 Linode is running several WordPress-based sites using nginx. Everything is great, except I find that, every few days, fastcgi fails and I start getting 502 gateway errors when I try to post a comment or upload an image, etc. Restarting fastcgi fixes the problem.</p></blockquote>
<p>It looks like a very similar issue I had with Ubuntu 8.04 (and PHP 5.2.4), which was fixed when I <a href="http://hostingfu.com/article/debian-gnu-linux-5-lenny-released">migrated to Debian 5 Lenny</a>. It appears that the OP is indeed running the problematic Ubuntu 8.04. Well. I still have <b>no idea</b> what the real issue was (thus do not know how to report a bug), except my PHP FastCGI process will crash multiple times during busy time of the day (but it&#8217;s only 2-3 requests/second average).</p>
<p><span id="more-188"></span></p>
<p>Before switching to Lenny, I have tested multiple methods to keep my PHP FastCGI processes alive, including running check/restarting script every 5 minutes, etc. However at the end even 5 minutes downtime felt a bit excessive, so I wrote a simple daemon in Python to keep an eye on Nginx&#8217;s error log, and restart PHP/FastCGI processes whenever something bad has been detected. The problem here is that the PHP/FastCGI processes actually do not die &#8212; Nginx simply cannot communicate with them. So I need to restart PHP whenever Nginx splits a dummy.</p>
<p><del>I put the code on <b>Linode Pastebin here</b></del>. <ins>Linode has appeared to remove that script from their Pastebin, but you can <a href="http://hostingfu.com/files/python/phpmonitor.py"><b>Download it here</b></a></ins>, modify some variables in the code (for example the email addresses, start/stop script location, etc), and then run it as root.</p>
<p>What it does:</p>
<ul>
<li>It will damonize first.</li>
<li>Scanning <code>/var/log/nginx/error.log</code> every 2 seconds, using similar algorithm as <code>tail -f</code>.</li>
<li>If &#8220;104: Connection reset by peer&#8221; or &#8220;111: Connection refused&#8221; is detected in the log,
<ul>
<li>Run <code>killall -9 php-cgi</code></li>
<li>Run <code>/etc/init.d/spawn-fcgi-php start</code> to restart the PHP FastCGI processes</li>
</ul>
</li>
</ul>
<p>It should use minimum memory + CPU/IO (around 3.5MB RSS, and stat calls are pretty fast). At least it keeps me peace at night that I know if my PHP processes are crashing, there&#8217;s a guardian to bring them back up. It still runs on my VPS at Linode &#8212; even though with Debian 5 I am getting crashes once every 2 weeks instead of 4-5 times a day.</p>
<p>Hopefully it will be useful to some.</p>
]]></content:encoded>
			<wfw:commentRss>http://hostingfu.com/article/keeping-your-php-fastcgi-processes-alive/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>EveryDNS Python API and Command Shell</title>
		<link>http://hostingfu.com/article/everydns-python-api-and-command-shell</link>
		<comments>http://hostingfu.com/article/everydns-python-api-and-command-shell#comments</comments>
		<pubDate>Mon, 16 Mar 2009 03:26:15 +0000</pubDate>
		<dc:creator>scotty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[everydns]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://hostingfu.com/?p=181</guid>
		<description><![CDATA[Back in August 2006 I wrote a review on EveryDNS. 2 and half years later nothing much has changed &#8212; same interface and same functionality, and it is still serving many of my domains. One thing I don&#8217;t like about EveryDNS is its lack of API support, i.e. you cannot programatically update your records. This [...]]]></description>
			<content:encoded><![CDATA[<p>Back in August 2006 <a href="http://hostingfu.com/free-dns/everydns">I wrote a review on EveryDNS</a>. 2 and half years later <em>nothing much has changed</em> &#8212; same interface and same functionality, and it is still serving many of my domains. One thing I don&#8217;t like about EveryDNS is its lack of API support, i.e. you cannot programatically update your records. This is especially getting inconvenient when I moved my main emails to <a href="http://www.google.com/a/">Google Apps</a> in January, and moved my currently-unused domains to Google AdSense for domains last week. Hand copying and pasting a big list of records for each domain is just <em>too much work</em>!</p>
<p>So, like any lazy-programmers who do not wish to spend <b>2 minutes</b> solving a borning problem, I simply spent <b>2 hours</b> coding up an EveryDNS client API library for Python, so I can add/remove domains/records programatically. This is inspired by the <a href="http://www.ultrize.com/everydns/">EveryDNS PHP API</a>. It basically scrapes EveryDNS&#8217;s web interface.</p>
<p><span id="more-181"></span></p>
<h3 id="toc-downloads">Downloads</h3>
<p>If you just want the library, there&#8217;s only a single PY file to download.</p>
<ul>
<li><a href="http://svn.fucoder.com/fucoder/pyeverydns/everydnslib.py"><b>everydnslib.py</b></a></li>
</ul>
<p>Just put it somewhere in your PYTHONPATH. It is developed on Python 2.5 and sorry no guarantee that it will work on any other Python version :)</p>
<h3 id="toc-usage">Usage</h3>
<p>Some sample usage of this library:</p>
<pre class="code">
$ python
Python 2.5.2 (r252:60911, Dec 12 2008, 10:25:58)
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; import everydnslib
&gt;&gt;&gt; edns = everydnslib.EveryDNS(<em>username</em>, <em>password</em>)
&gt;&gt;&gt; edns.list_domains()
[{'did': '...', 'domain': 'example.com', 'type': 'primary'},
 {'did': '...', 'domain': 'foobar.com', 'type': 'primary'},
 ...
 {'did': '...', 'domain': 'testing1.com', 'type': 'webhop', 'webhop': 'http://testing2.com/'}]
&gt;&gt;&gt; edns.list_records('example.com')
[{'rid': '...', 'host': 'example.com', 'type': 'A', 'value': '123.123.123.123', 'mx': '', 'ttl': '43200'},
 {'rid': '...', 'host': 'example.com', 'type': 'MX', 'value': 'mx.example.com', 'mx': '1', 'ttl': '43200'},
 ...
 {'rid': '...', 'host': 'www.example.com', 'type': 'CNAME', 'value': 'example.com', 'mx': '', 'ttl': '7200'}]
&gt;&gt;&gt; edns.add_domain('example2.com')
&gt;&gt;&gt; edns.add_record('example2.com', 'www.example2.com', 'A', '123.123.123.123')
&gt;&gt;&gt; edns.del_records('example.com', rtype='MX')
&gt;&gt;&gt; edns.del_domain('example.com')
</pre>
<p>I have also added some helper functions to set up Google-related services.</p>
<pre class="code">
$ python
Python 2.5.2 (r252:60911, Dec 12 2008, 10:25:58)
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; import everydnslib
&gt;&gt;&gt; edns = everydnslib.EveryDNS(<em>username</em>, <em>password</em>)
&gt;&gt;&gt; everydnslib.setup_gmail(edns, 'example.com')
&gt;&gt;&gt; everydnslib.setup_adsense_for_domain(edns, 'example.com', 'pub-1234567890')
</pre>
<p>Unfortunately EveryDNS still does not have SRV record support so it is impossible to get Google Talk to work on your domain.</p>
<h3 id="toc-command-shell">Command Shell</h3>
<p>As a test case for the API, I have also created a simple shell to access domains/records on your EveryDNS account. Download the following PY file:</p>
<ul>
<li><a href="http://svn.fucoder.com/fucoder/pyeverydns/everydnscmd.py"><b>everydnscmd.py</b></a></li>
</ul>
<p>Put the file in the same directory as <code>everydnslib.py</code>. chmod it to executable, and then run it.</p>
<pre class="code">
$ ./everydnscmd.py <em>username</em> <em>password</em>
[username@everydns] ls
TYPE       DOMAIN
primary   example.com
primary   foobar.org
...
webhop    testing1.com
[username@everydns] ls example.com
           HOST TYPE  VALUE             TTL     MX
    example.com A     123.123.123.123 43200
    example.com MX    mx.example.com  43200      1
...
www.example.com CNAME example.com      7200
[username@everydns] add example2.com
[username@everydns] add example2.com www.example2.com A 123.123.123.123
[username@everydns] del example.com example.com MX
[username@everydns] del example.com
[username@everydns] help

Documented commands (type help <topic>):
========================================
add  del  ls

Undocumented commands:
======================
EOF  exit  help
</pre>
<p>That&#8217;s it!</p>
<p>Hopefully Python coders who use EveryDNS will find this module useful.</p>
<h3 id="toc-updates-20-june-2009">Updates 20 June 2009</h3>
<p>Thanks to Brian Hartvigsen from EveryDNS for sending me a patch including the following updates:</p>
<ul>
<li>Allows listing, adding, deleting dynamic domain&#8217;s records</li>
<li>Remove code that duplicates functionality in the backend</li>
<li>Fixed regex for domains that are marked as not listing our nameservers<br/>Nothing in Python API indicates this status currently, but this could be added</li>
<li>Updated for forthcoming updates.  Compatible w/ existing site too</li>
<li>Webhops had domain/webhop reversed</li>
</ul>
<p>While this is not an EveryDNS officially supported API, they are trying not to break it so big thanks to them for providing me updates.</p>
<p>Again, the files are hosted on a Subversion server. If you would to send me patches, do</p>
<pre class="code">
$ svn checkout http://svn.fucoder.com/fucoder/pyeverydns/
$ ...
$ svn diff &gt; unified.diff
</pre>
<p>And feel free to send that diff to me.</p>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hostingfu.com/article/everydns-python-api-and-command-shell/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Python Web-Application Hosting</title>
		<link>http://hostingfu.com/article/python-web-application-hosting</link>
		<comments>http://hostingfu.com/article/python-web-application-hosting#comments</comments>
		<pubDate>Sun, 01 Oct 2006 12:33:27 +0000</pubDate>
		<dc:creator>scotty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://hostingfu.com/?p=52</guid>
		<description><![CDATA[While I am doing most my own websites are done in PHP, during the day I wrote web-based financial-planning applications for one of the largest deployment in Australia in this simple, elegant and yet powerful programming language &#8212; Python. Python is a great language, and there are many great Python web frame-works out there (which [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://hostingfu.com/files/images/python-logo.png" alt="Python Logo" width="172" height="53" style="float:right;margin:0 0 5px 12px"/> While I am doing most my own websites are done in <a href="http://www.php.net/">PHP</a>, during the day I wrote web-based financial-planning applications for one of the largest deployment in Australia in this simple, elegant and yet powerful programming language &#8212; <a href="http://www.python.org/">Python</a>.</p>
<p>Python is a great language, and there are many great Python web frame-works out there (which is one of its strength but also weakness). However, we do not see heaps of ready-to-install open-source web applications written in Python, unlike PHP. One of the biggest issue is difficulties to deploy &#8212; PHP is pretty much everywhere, but many web hosts don&#8217;t even support Python.</p>
<p>Here I am going to share about getting your Python-based website/web-application hosted.</p>
<p><span id="more-52"></span></p>
<h3 id="toc-diversity-of-gateway-interfaces">Diversity of Gateway Interfaces</h3>
<p>One complexity involving developing and deploying Python-based web applications is its diversity of gateway interfaces with web servers. For example:</p>
<ul>
<li><b>CGI</b> &#8212; more universally supported by the hosting companies. Slow because of folking Python interpreter processes.</li>
<li><b>Fast-CGI</b> &#8212; another old technology that are getting more supports from hosting companies, thanks to the popularity of Ruby on Rails. Used by frameworks such as <a href="http://webpy.org/">web.py</a> and <a href="http://pylonshq.com/">Pylons</a>.</li>
<li><b>SCGI</b> &#8212; a light-weight alternative to FastCGI, has a better Apache module, but rarely supported by hosting companies. Frameworks such as <a href="http://www.quixote.ca/">Quixote</a> support it.</li>
<li><b>Mod_Python</b> &#8212; how&#8217;s running Python interpreter right inside Apache? Probably the most powerful way to deploy your app, but probably don&#8217;t expect having this privilege in a shared hosting environment. Preferred by <a href="http://www.djangoproject.com/">Django</a> and <a href="http://www.turbogears.org/">TurboGears</a>.</li>
<li><b>Proxy</b> &#8212; making your web-app a long-running process, listening on a specific port for HTTP request, and get your main web server to proxy/forward that request. Preferred by <a href="http://zope.org/">Zope</a>.</li>
</ul>
<p>As there are probably a few dozen more Python frameworks out there, I think there might be other deployment options available. However we also neeed to note that some frameworks allows multiple gateway interfaces. Django for example, can be deployed as either FastCGI or mod_python. If your framework or application is written onto of <a href="http://www.wsgi.org/">WSGI</a>, it should also support whatever interface that also has a WSGI implementation.</p>
<p>Note that I am not saying deployment should govern the Python web framework you use. No &#8212; use whatever framework that you feel comfortable with, whatever that fits your way of thinking. Just that your choice of framework might severe limit your hosting options (if you are also limited by budget).</p>
<h3 id="toc-python-versions-and-third-party-modules">Python Versions and Third-Party Modules</h3>
<p>While <a href="http://www.python.org/2.5">Python 2.5</a> has just been released, many shared hosts still support only Python 2.3 (for example running a stable Debian or CentOS). Some frameworks have gone to the length to ensure they can run on older Python versions, but many require at least Python 2.4.</p>
<p>Also while Python claims to be &#8220;battery included&#8221;, you&#8217;ll find not all batteries required to develop a web application is provided by the host. Many of them can be easily downloaded and distributed along side with your own apps, but some of them require extension libraries to be compiled on the host. Lack of C compiler and related include files might make such task impossible.</p>
<p>You&#8217;ll also find many packages come in <a href="http://peak.telecommunity.com/DevCenter/PythonEggs">Python eggs</a> and require <a href="http://peak.telecommunity.com/DevCenter/setuptools">setuptools</a> to run. Expect a bit of trouble if setuptools is not available on your host.</p>
<p>So, which host is suitable to host my Python application?</p>
<h3 id="toc-you-need-root">You need &#8220;root&#8221;</h3>
<p>The <em>easiest</em> option is to host on your own box, where you are root who can install whatever Python, 3rd party module and web server extension you want. Mod_Python? No problem. <code>apt-get libapache2-mod-python</code> or <code>emerge mod_python</code>, and few minutes later you are ready to deploy. Everything can be done with <code>sudo</code> &#8212; no more pleading emails to ask sysadmin of the hosting company to install certain package for you.</p>
<p>Getting a dedicated server or a virtual private server is probably the easiest way to have this privilege. Get a <a href="http://hostingfu.com/article/dedicated-or-virtual-private-servers">VPS over dedicated</a> if you have lower budget &#8212; but you probably still need around $20/month to get a good performing VPS with sufficient memory and enough CPU slices.</p>
<h3 id="toc-specialised-hosting">Specialised Hosting</h3>
<p>Being &#8220;root&#8221; is not for everyone, and managing a dedicated or virtual private server can be more stressful than prototyping a web application in Django. Sometimes you just want to let someone else handling all these system administration tasks, and you just want somewhere to drop you application in and make it online.</p>
<p>After a bit of googling, there is a surprisingly large number of hosting companies that are specialised in Python web-app hosting. What you should probably do is go to your framework&#8217;s home page, and check whether they have listed hosting companies that are friendly to that specific framework. Many of them provide mod_python in your own Apache process, or allow you to run a persistent process and set up proxy rule to forward the requests. For example:</p>
<ul>
<li><a href="http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts">Django-friendly web hosts</a></li>
<li><a href="http://docs.turbogears.org/1.0/Hosting">TurboGears hosting companies</a></li>
<li><a href="http://www.zope.org/Resources/ZSP/">Zope Solution Providers</a> (some of them are not hosting related)</li>
</ul>
<p><a href="http://www.google.com.au/search?hl=en&amp;q=Python%20Hosting">Googe it</a> also helps, at least you&#8217;ll get to see who is the most popular hosting company the is specialised in Python applications. I found <a href="http://www.webfaction.com/">WebFaction</a> who has shared hosting plans from $14.50/month with 1 long-running process. Looks like they are pretty Python centric, and have very easy TurboGears deployment.</p>
<h3 id="toc-shared-hosting">Shared Hosting</h3>
<p>Running Python web applications on shared hosting spells trouble. However if you are on a very low budget, and have plenty of time to kill, then you might as well have hack up a work around and publish a HOWTO on running XYZ framework on some cheap shared hosting.</p>
<p>Personally I have experience with only two shared hosts.</p>
<ul>
<li>
<p><strong><a href="http://www.dreamhost.com/">DreamHost</a></strong> &#8212; there are plenty of howto&#8217;s on their wiki, explaining how to get Django and Trac to run on their shared hosting plans. Many suggest compiling your own Python.</p>
<p>That&#8217;s right. DreamHost provides access to C/C++ compilers, and allows you to compile your own Python executable. At least it is an option when the Python 2.3/2.4 installed on the server refuse to work. On my server Python 2.4 lacks many modules and C headers to compile extensions with, which renders it little use.</p>
<p>Despite having access to compilers, getting Python to run properly on DreamHost still requires a bit of patience and sometimes rubber chicken sacrifices. The CGI speed is also very slow as their server is usually overloaded.</p>
</li>
<li>
<p><strong><a href="http://www.jumba.com.au/">Jumba</a></strong> &#8212; they are cPanel based and Python support is <em>pathetic</em>. Actually in their support forum they said explicitly that Python is not supported.</p>
<p>However Python 2.4 has been installed, but almost no 3rd party module is available &#8212; not even MySQLdb. All compilers are locked down so you can&#8217;t get your own C modules compiled.</p>
<p>At the end it is only useful to run sysadmin scripts and nothing else.</p>
</li>
</ul>
<p>If you are thinking about signing up a shared hosting account for your Python applications, make sure you ask whether Python is actively supported. What versions are they running, what extension modules, and <em>very importantly</em>  whether there&#8217;s a money back guarantee if you can&#8217;t get your app working in their environment.</p>
<h3 id="toc-conclusion">Conclusion</h3>
<p>Let me summarise. Python hosting is not as available as PHP, and you need to watch out for the gateway interface your framework uses, Python version and 3rd party module requirements.</p>
<p>While Python encourages &#8220;there is only one way&#8221;, there are many hosting options.</p>
<p>Best bet is dedicated or VPS. Find a specialised Python hosting company if you do not want to attend sysadmin part of managing a box. Finally, deploying of shared host is hard &#8212; make sure you ask a lot of questions before signing up to one.</p>
]]></content:encoded>
			<wfw:commentRss>http://hostingfu.com/article/python-web-application-hosting/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
