51

Want to use supervisord to control the processes for my Python 3 project. It is specifically stated that "Supervisor is known to work with Python 2.4 or later but will not work under any version of Python 3".

Any suggestions for supervisor replacement for Python 3?

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
user2777473
  • 3,736
  • 5
  • 26
  • 39

6 Answers6

67

The upcoming 4.0 release of Supervisord will support Python 2.7, and 3.4 and up. Until then, you could use the supervisor-py3k fork.

Or simply run supervisord with Python 2; your Python 3 codebase is otherwise unaffected, as supervisord is an independent process.

toolforger
  • 754
  • 7
  • 22
Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
  • 1
    Thx... God the Installation gives no information and I totally don't know how to start, with so many *.py files:( – TylerTemp Sep 15 '14 at 03:20
  • 1
    Could you add a reference for "The upcoming 4.0 release of Supervisord will support Python 2 and 3 (3.2 and up)."? – joar May 11 '15 at 12:20
  • 3
    @joar: See [this issue](https://github.com/Supervisor/supervisor/issues/510) for a status of the Supervisord move to support Python 3.x. The master branch in GitHub supports Python 3, and is [marked as version 4.0.0-dev](https://github.com/Supervisor/supervisor/blob/master/supervisor/version.txt). – Martijn Pieters May 11 '15 at 14:21
26

To use supervisord with Python 3 you can setup it directly with pip:

pip install git+https://github.com/Supervisor/supervisor
Vasili Pascal
  • 3,102
  • 1
  • 27
  • 21
  • 2
    This is a good option as of Aug 2018, where the latest pip version is 3.3.4 versus 4.0.0dev on GitHub, as noted above – Brad Solomon Aug 21 '18 at 20:21
16

Python 3 support for supervisord is still experimental and as mentioned in documentation, you shouldn't use it in production.

Mozilla Foundation has developed a package called circus which works on Python 3.

It manages process with circusd and it also has circusctl, circus-top, circus-web(similar to supervisor).

You can use your supervisor conf file with circus with some changes. It also has a seperate section in docs for users coming from supervisor. You can read that for more details.

Update: Latest master has python 3 support. You can install it with

pip install git+https://github.com/Supervisor/supervisor
Chillar Anand
  • 27,936
  • 9
  • 119
  • 136
15

Master branch of Supervisor already supports Python3. It's a development version, so please notify any bug you find.

Adrian Lopez
  • 2,601
  • 5
  • 31
  • 48
8

supervisor 4+ supports Python3, It's available in PyPI so you can simply do pip install supervisor to install it.

atb00ker
  • 957
  • 13
  • 24
0

For anyone that finds this thread, here is what I've found...

The system installed version of supervisor, installed via apt, presently is 3.3.1. This is ubuntu 18.04.

What is important to note is that the first line in /usr/bin/supervisord is #!/usr/bin/python.

This is the python 2.7 version on my system.

Looking at https://github.com/Supervisor/supervisor/blob/3.3.1/supervisor/supervisord.py, it has #!/usr/bin/env python as the first line. This could possibly call a python3 version if it is set in the path whereby python implies python3.

However...

It appears that the install produces a stub program in /usr/bin/supervisord which then calls an entry point, thereby running the supervisord.py code.

So no matter how you set your path, how python may be set to calling a python3 program...

Its not going to get around the hard-coded #!/usr/bin/python call in /usr/bin/supervisord.

One alternative is setting up alternatives which results in /usr/bin/python being python3.

So you need to do some tracking down of how python2 and python3 are deployed on your system.

Otto Hirr
  • 21
  • 5