wiki:Notes/PythonServers

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.

http://werkzeug.pocoo.org/

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

http://www.paramiko.org/

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 Python​Twisted? 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.

Search PyPi for 'celery'

WAMP

See PythonServers/WAMP

STOMP

https://stomp.github.io/

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

https://www.odoo.com/

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

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

http://www.tryton.org/

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

http://health.gnu.org/

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

Last modified 18 months ago Last modified on 10/31/2015 01:40:40 AM