mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
ctrl+c now correctly terminates fab serve
Previously `ctrl+c` a `fab serve` wouldn't necessarily terminate the web server. Even if it does, re-using the command `fab serve` might result in the following error: ``` socket.error: [Errno 48] Address already in use ``` This fix manually creates a `TCPServer` with `allow_reuse_address` set to `True`, which solves this issue. Tested on OS X 10.9.1.
This commit is contained in:
parent
0b3dc9db21
commit
786a209d2b
1 changed files with 13 additions and 1 deletions
|
|
@ -1,6 +1,9 @@
|
|||
from fabric.api import *
|
||||
import fabric.contrib.project as project
|
||||
import os
|
||||
import sys
|
||||
import SimpleHTTPServer
|
||||
import SocketServer
|
||||
|
||||
# Local path configuration (can be absolute or relative to fabfile)
|
||||
env.deploy_path = 'output'
|
||||
|
|
@ -32,7 +35,16 @@ def regenerate():
|
|||
local('pelican -r -s pelicanconf.py')
|
||||
|
||||
def serve():
|
||||
local('cd {deploy_path} && python -m SimpleHTTPServer'.format(**env))
|
||||
os.chdir(env.deploy_path)
|
||||
|
||||
PORT = 8000
|
||||
class AddressReuseTCPServer(SocketServer.TCPServer):
|
||||
allow_reuse_address = True
|
||||
|
||||
server = AddressReuseTCPServer(('', PORT), SimpleHTTPServer.SimpleHTTPRequestHandler)
|
||||
|
||||
sys.stderr.write('Serving on port {0} ...\n'.format(PORT))
|
||||
server.serve_forever()
|
||||
|
||||
def reserve():
|
||||
build()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue