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

DNS

Setting up and running DNS servers can be complicated and may be functionally too much inter-net and not enough inner-net for this project.

In some ways a simple hand-crafted Location Finder might be better and easier ( ex. pywacket path "mycomputer.myserver.myfiles" might translate to an http directory service "http://192.168.3.3:8086". The Locator would also know that resource path "mycomputer.myserver.myfiles.documents.notes" resolves to "http://192.168.3.3:8086/documents/notes.doc", which is considerable more that DNS does.

On the other hand DNS is The Standard so ...

See PythonTwistdServer#TwistdDNS

A smaller alternative to Twisted is Python DNS servers based on dnslib.

https://pypi.org/project/dnslib/

A library to encode/decode DNS wire-format packets supporting both Python 2.7 and Python 3.2+.

The library provides:

  • Support for encoding/decoding DNS packets between wire format, python objects, and Zone/DiG textual representation (dnslib.dns)
  • A server framework allowing the simple creation of custom DNS resolvers (dnslib.server) and a number of example servers created using this framework
  • A number of utilities for testing (dnslib.client, dnslib.proxy, dnslib.intercept)

Python 3 support was added in Version 0.9.0 which represented a fairly major update to the library - the key changes include:

  • Python 2.7/3.2+ support (the last version supporting Python 2.6 or earlier was version 0.8.3)

The download is about 270 KB ( 60 KB zipped ), so it may be a candidate for inclusion into the 'packaged components' library of Level-Zero PyWacket. In a Python zip file distribution, it might weigh in at 30 KB zipped. It seems to get a new release about once a year. Very doable.

Examples of servers using dnslib ->

https://github.com/major1201/dns-router/blob/master/dns-router.py

https://gist.github.com/andreif/6069838

https://gist.github.com/pklaus/b5a7876d4d2cf7271873

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, particularly PythonServers/WAMP#Autobahn

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 7 years ago Last modified on 09/10/2018 01:01:51 PM