Python Servers
This is a catch-all category. In practice, 'Python servers' will mean Twisted servers, however limited. Will work within existing constraints somehow. See PythonTwistdServer
First, the standard library provides client and server implementation for several network protocols out of the box: see http://docs.python.org/library/internet.html
HTTP
Usually bare bones HTTP routing, needs template, database, wiki parsing, etc.
See PythonTwistdServer#TwistdWeb
Tornado
See PythonTornado
Cherry Py
Werkzeug
Widely used.
Werkzeug started as a simple collection of various utilities for WSGI applications and has become one of the most advanced WSGI utility modules.
It includes a powerful debugger, fully featured request and response objects, HTTP utilities to handle entity tags, cache control headers, HTTP dates, cookie handling, file uploads, a powerful URL routing system and a bunch of community contributed addon modules.
http://werkzeug.pocoo.org/docs/0.10/
Often combined with Jinja template engine. Flask for instance.
Other HTTP Servers
https://pypi.python.org/pypi/aiohttp - asyncio py 3.3
https://pypi.python.org/pypi/circuits
circuits is a Lightweight Event driven and Asynchronous Application Framework for the Python Programming Language with a strong Component Architecture.
circuits also includes a lightweight, high performance and scalable HTTP/WSGI compliant web server as well as various I/O and Networking components.
FTP
See PythonTwistdServer#TwistdFTP
WebDAV
Not sure what it is, but it's a server ...
https://code.google.com/p/pywebdav/
PyWebDAV is a standards compliant WebDAV server and library written in Python
Python WebDAV implementation (level 1 and 2) that features a library that enables you to integrate WebDAV server capabilities to your application.
A fully working example on how to use the library is included. You can find a server in the DAVServer package. This server is fully functional and can even be run as daemon ...
https://code.google.com/p/pywebdav/source/browse/
Latest update 2012 ...
More links ... some confusion here.
https://pypi.python.org/pypi/PyWebDAV/0.9.8
https://pypi.python.org/pypi/WsgiDAV/1.2.0
Generic WebDAV server based on WSGI
WsgiDAV is a WebDAV server for sharing files and other resources over the web. It is based on the WSGI interface http://www.python.org/peps/pep-0333.html.
It comes bundled with a simple WSGI web server.
2015 !!''
SSH
See PythonTwistdServer#TwistdConch
Paramiko is a Python (2.6+, 3.3+) implementation of the SSHv2 protocol, providing both client and server functionality.
While it leverages a Python C extension for low level cryptography (PyCrypto), Paramiko itself is a pure Python interface around SSH networking concepts.
http://docs.paramiko.org/en/1.15/
http://docs.paramiko.org/en/1.15/api/server.html
http://docs.paramiko.org/en/1.15/api/pipe.html - Cross-platform pipe implementations
Abstraction of a one-way pipe where the read end can be used in select.select. Normally this is trivial, but Windows makes it nearly impossible.
The pipe acts like an Event, which can be set or cleared. When set, the pipe will trigger as readable in select.
https://github.com/paramiko/paramiko
Requirements
Python 2.6 or better http://www.python.org/ - this includes Python 3.2 and higher as well.
pycrypto 2.1 or better https://www.dlitz.net/software/pycrypto/
ecdsa 0.9 or better https://pypi.python.org/pypi/ecdsa
Demo
demo_server.py
an ssh server that listens on port 2200 and accepts a login for 'robey' (password 'foo'), and pretends to be a BBS. meant to be a very simple demo of writing an ssh server.
XMPP
Twistd XMPP Router
See PythonTwistdServer#TwistdXMPPRouter
Pretzel
Pretzel is a Jabber/XMPP server designed to be able to be easily extensible.
It is built on top of the Twisted and is designed to be a platform on top of which Jabber Extension Proposals can easily be implemented, in order to drive client adoption and testing.
- Why Pretzel?
- the need for a scripty-language Jabber server
- the Twisted framework is kind of pretzel-y
- the first big batch of code was committed in Stuttgart, Germany, birthplace of the pretzel
Wokkel
Wokkel is collection of enhancements on top of the PythonTwisted? networking framework, written in Python. It mostly provides a testing ground for enhancements to the Jabber/XMPP protocol implementation as found in Twisted Words, that are meant to eventually move there.
Start here with the developer guides for Wokkel, including examples and the current API reference.
Currently, Wokkel provides the following enhancements on top of Twisted Words:
- A mechanism for easier implementation of XMPP Extension Protocols (XEPs) as so-called subprotocols.
- XMPP Client and server-side component support, that eases development and supports subprotocols.
- XMPP Server support. Note that this does not yet include support for handling client connections.
- Subprotocol implementations for:
- Generic presence, roster and message handling.
- Service Discovery (XEP-0030), client and service side.
- Publish-Subscribe (XEP-0060), client and service side.
- Software Version (XEP-0092), service side.
- XMPP Ping (XEP-0199), client and service side.
- Multi-User Chat (XEP-0045), client side. (new in 0.7.0)
- Data format implementations for:
- Data Forms (XEP-0004)
- User Tune (XEP-0118)
- User Mood (XEP-0107)
- XMPP Stanza Headers and Internet Metadata. (XEP-0131).
- Delayed Delivery (XEP-0203 and XEP-0091). (new in 0.7.0)
AMQP
http://www.fullstackpython.com/
http://www.fullstackpython.com/task-queues.html
... The defacto standard Python task queue is Celery ...
Celery
http://www.celeryproject.org/
Celery is an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.
The execution units, called tasks, are executed concurrently on a single or more worker servers using multiprocessing, Eventlet, or gevent. Tasks can execute asynchronously (in the background) or synchronously (wait until ready).
Celery is used in production systems to process millions of tasks a day.
... The recommended message broker is RabbitMQ, but support for Redis, Beanstalk, MongoDB, CouchDB, and databases (using SQLAlchemy or the Django ORM) is also available.
http://docs.celeryproject.org/en/latest/index.html
https://github.com/mher/flower
Flower is a web based tool for monitoring and administrating Celery clusters.
WAMP
STOMP
STOMP is the Simple (or Streaming) Text Orientated Messaging Protocol.
STOMP provides an interoperable wire format so that STOMP clients can communicate with any STOMP message broker to provide easy and widespread messaging interoperability among many languages, platforms and brokers.
http://stomp.github.io/implementations.html
CoilMQ - a lightweight pure Python STOMP broker inspired by StompServer?
http://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol
RabbitMQ STOMP Adapter - http://www.rabbitmq.com/stomp.html
CoilMQ
https://github.com/hozn/coilmq/
CoilMQ is a simple, configurable STOMP message broker (aka STOMP server) written in Python. This project is inspired by the simple design of the Ruby stompserver project ...
Note that as of 3/31/2011 there is a version 1.1 of the STOMP protocol. Currently this is not supported by CoilMQ (but the plan is to add support).
Last release June 2011 ... some activity recently.
Zero MQ
A.K.A. pyzmq. Includes both client and server python package and necessary binaries. Called "pyzmq-static" on PyPi.
Current pyzmq version 4.0.x for Mint and Windows uses libzmq3, current RaspberryPi pyzmq version 2.2.0 uses only libzmq1, confusing ...
https://pypi.python.org/pypi/pyzmq
https://github.com/zeromq/pyzmq/
PyZMQ: Python bindings for ØMQ
https://github.com/zeromq/pyzmq/tree/master/examples
Confusing versions - https://zeromq.github.io/pyzmq/changelog.html#changelog
PyZMQ Documentation - https://zeromq.github.io/pyzmq/
Tutorial and Examples - http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/pyzmq.html
Links - http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/references/links.html
ZMQ Guide - http://zguide.zeromq.org/page:all
Python Guide - http://zguide.zeromq.org/py:all
See Messaging#ZeroMQ, PythonClients#ZeroMQ
Enterprise Servers
Comparison_of_Tryton_and_Odoo | http://en.wikipedia.org/wiki/Comparison_of_Tryton_and_Odoo |
Odoo ( OpenERP )
http://en.wikipedia.org/wiki/Odoo
Grow Your Business With Odoo Apps
One need, one app. Integration has never been so smooth,
Free Trail
... and then what ?
https://github.com/odoo/odoo/blob/9.0/requirements.txt
Over 40 required packages ! Many dependencies ... greenlets.
https://nightly.odoo.com/9.0/nightly/src/
Over 80 MB download ''
https://www.odoo.com/documentation/8.0/setup/install.html#setup-install-source
... if Python is already installed, make sure it is 2.7.9, previous versions are less convenient and 3.x versions are not compatible with Odoo ...
... For libraries using native code (Pillow, lxml, greenlet, gevent, psycopg2, ldap) it may be necessary to install development tools and native dependencies before pip is able to install the dependencies themselves. These are available in -dev or -devel packages for Python, Postgres, libxml2, libxslt, libevent, libsasl2 and libldap2. Then the Python dependecies can themselves be installed ...
Alot of stuff ...
Tryton
The core of Tryton (also called Tryton kernel) provides all the necessary functionalities for a complete application framework: data persistence, extensive modularity, users management (authentication, fine grained control for data access, handling of concurrent access of resources), workflow and report engines, web services and internationalisation. Thus constituting a complete application platform which can be used for any relevant purpose.
- Accounting
- Invoicing
- Sale Management
- Purchase Management
- Analytic Accounting
- Inventory Management
- Manufacturing Resource Planning (MRP)
- Project Management
- Lead and Opportunity Management
http://en.wikipedia.org/wiki/Tryton
Tryton is a three-tier high-level general purpose computer application platform on top of which is built an Enterprise resource planning (ERP) business solution through a set of Tryton modules. The three-tier architecture consists of the Tryton client, the Tryton server and the Database management system (mainly PostgreSQL).
Search for Tryton at PyPI | https://pypi.python.org/pypi?%3Aaction=search&term=tryton&submit=search |
Browse for Tryton at PyPI | https://pypi.python.org/pypi?:action=browse&show=all&c=551 |
Repository - http://hg.tryton.org/
neso - Neso Tryton client/server
proteus - Proteus client library
tryton -Tryton client
Downloads - http://downloads.tryton.org/3.4/
Search for Tryton at PyPI | https://pypi.python.org/pypi?%3Aaction=search&term=tryton&submit=search |
Browse for Tryton at PyPI | https://pypi.python.org/pypi?:action=browse&show=all&c=551 |
Found listing in PyPi for ...
GNU Health
Our goal is to contribute with health professionals around the world to improve the lives of the underprivileged, providing a free system that optimizes health promotion and disease prevention.
GNU Health is an official GNU Package, and the Hospital Information System adopted by the United Nations University, International Institute for Global Health, for the implementations and trainings.
http://savannah.gnu.org/projects/health/
GNU Health is a free Health and Hospital Information System with the following functionality :
- Electronic Medical Record (EMR)
- Hospital Information System (HIS)
- Health Information System
https://en.wikibooks.org/wiki/GNU_Health
https://en.wikibooks.org/wiki/GNU_Health/First_Steps
GNU Health is an extension to Tryton, a general enterprise resource planning system (or ERP for short) for almost any type of company or organisation.
Tryton is developed in the Python programming language, and it stores all its data in a PostgreSQL database.
Mercurial Repository - http://hg.savannah.gnu.org/hgweb/health/
backend/ config/ doc/ drwxr-xr-x health/ drwxr-xr-x health_archives/ drwxr-xr-x health_calendar/ drwxr-xr-x health_crypto/ drwxr-xr-x health_genetics/ drwxr-xr-x health_gyneco/ drwxr-xr-x health_history/ drwxr-xr-x health_icd10/ drwxr-xr-x health_icd10pcs/ drwxr-xr-x health_icpm/ drwxr-xr-x health_icu/ drwxr-xr-x health_imaging/ drwxr-xr-x health_inpatient/ drwxr-xr-x health_inpatient_calendar/ drwxr-xr-x health_iss/ drwxr-xr-x health_lab/ drwxr-xr-x health_lifestyle/ drwxr-xr-x health_mdg6/ drwxr-xr-x health_ntd/ drwxr-xr-x health_ntd_chagas/ drwxr-xr-x health_ntd_dengue/ drwxr-xr-x health_nursing/ drwxr-xr-x health_pediatrics/ drwxr-xr-x health_pediatrics_growth_charts/ drwxr-xr-x health_pediatrics_growth_charts_who/ drwxr-xr-x health_profile/ drwxr-xr-x health_qrcodes/ drwxr-xr-x health_reporting/ drwxr-xr-x health_services/ drwxr-xr-x health_socioeconomics/ drwxr-xr-x health_stock/ drwxr-xr-x health_surgery/ drwxr-xr-x health_who_essential_medicines/ drwxr-xr-x scripts/ drwxr-xr-x
https://en.wikibooks.org/wiki/GNU_Health/Different_ways_to_test_GNU_Health
https://en.wikibooks.org/wiki/GNU_Health/The_Live-CD
... etc.
Also
- Notes/PythonClients - not necessarily for Python servers.