Miniwebserver: Unterschied zwischen den Versionen

Aus C3D2
Wechseln zu: Navigation, Suche
(Python: Logging)
(Python >> Ruby :-))
Zeile 1: Zeile 1:
 
[[Category:Ruby]] [[Category:Python]]
 
[[Category:Ruby]] [[Category:Python]]
  
=Python=
+
=Python (base library)=
 +
 
 +
<source lang="python">
 +
#!/usr/bin/env python
 +
import sys
 +
import os
 +
 
 +
from SocketServer import ThreadingMixIn
 +
from BaseHTTPServer import HTTPServer
 +
from SimpleHTTPServer import SimpleHTTPRequestHandler
 +
 
 +
class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
 +
    pass
 +
 
 +
if len(sys.argv) != 3:
 +
    print "Usage: %s <port> <dir>" % (sys.argv[0],)
 +
    sys.exit()
 +
 
 +
address = ('', int(sys.argv[1]))
 +
server = ThreadedHTTPServer(address, SimpleHTTPRequestHandler)
 +
 
 +
os.chdir(sys.argv[2])
 +
 
 +
try:
 +
    server.serve_forever()
 +
except KeyboardInterrupt:
 +
    pass
 +
</source>
 +
 
 +
=Python (Twisted)=
  
 
<source lang="python">
 
<source lang="python">

Version vom 14. November 2007, 22:47 Uhr


Python (base library)

#!/usr/bin/env python
import sys
import os

from SocketServer import ThreadingMixIn
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
    pass

if len(sys.argv) != 3:
    print "Usage: %s <port> <dir>" % (sys.argv[0],)
    sys.exit()

address = ('', int(sys.argv[1]))
server = ThreadedHTTPServer(address, SimpleHTTPRequestHandler)

os.chdir(sys.argv[2])

try:
    server.serve_forever()
except KeyboardInterrupt:
    pass

Python (Twisted)

#!/usr/bin/env python
import sys

from twisted.python import log
from twisted.internet import reactor
from twisted.web import server, static

if len(sys.argv) != 3:
    print "Usage: %s <port> <dir>" % (sys.argv[0],)
    sys.exit()

root = static.File(sys.argv[2])
site = server.Site(root)

reactor.listenTCP(int(sys.argv[1]), site)
log.startLogging(sys.stderr)
reactor.run()

Ruby

#!/usr/local/bin/ruby
require 'webrick'
include WEBrick

if ARGV.size != 2
  puts "Usage: #{$0} <port> <dir>"
  exit
end

s = HTTPServer.new(
  :Port            => ARGV[0].to_i,
  :DocumentRoot    => ARGV[1]
)


trap("INT"){ s.shutdown }
s.start