Skip to main content

Integrated process monitor for developing servers.

Project description

https://img.shields.io/pypi/v/hupper.svg https://img.shields.io/travis/Pylons/hupper.svg Documentation Status

hupper is an integrated process monitor that will track changes to any imported Python files in sys.modules as well as custom paths. When files are changed the process is restarted.

Command-line Usage

Hupper can load any Python code similar to python -m <module> by using the hupper -m <module> program.

$ hupper -m myapp
Starting monitor for PID 23982.

API Usage

Start by defining an entry point for your process. This must be an importable path in string format. For example, myapp.scripts.serve.main.

# myapp/scripts/serve.py

import sys
import hupper
import waitress

def wsgi_app(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain'])
    yield [b'hello']

def main(args=sys.argv[1:]):
    if '--reload' in args:
        # start_reloader will only return in a monitored subprocess
        reloader = hupper.start_reloader('myapp.scripts.serve.main')

        # monitor an extra file
        reloader.watch_files(['foo.ini'])

    waitress.serve(wsgi_app)

Acknowledgments

hupper is inspired by initial work done by Carl J Meyer and David Glick during a Pycon sprint and is built to be a more robust and generic version of Ian Bicking’s excellent PasteScript paste serve --reload and Pyramid’s pserve --reload.

0.4.1 (2017-01-03)

  • Handle errors that may occur when using watchdog to observe non-existent folders.

0.4.0 (2017-01-02)

0.3.6 (2016-12-18)

  • Read the traceback for unknown files prior to crashing. If an import crashes due to a module-scope exception the file that caused the crash would not be tracked but this should help.

0.3.5 (2016-12-17)

  • Attempt to send imported paths to the monitor process before crashing to avoid cases where the master is waiting for changes in files that it never started monitoring.

0.3.4 (2016-11-21)

  • Add support for globbing using the stdlib glob module. On Python 3.5+ this allows recursive globs using **. Prior to this, the globbing is more limited.

0.3.3 (2016-11-19)

  • Fixed a runtime failure on Windows 32-bit systems.

0.3.2 (2016-11-15)

  • Support triggering reloads via SIGHUP when hupper detected a crash and is waiting for a file to change.

  • Setup the reloader proxy prior to importing the worker’s module. This should allow some work to be done at module-scope instead of in the callable.

0.3.1 (2016-11-06)

  • Fix package long description on PyPI.

  • Ensure that the stdin file handle is inheritable incase the “spawn” variant of multiprocessing is enabled.

0.3 (2016-11-06)

  • Disable bytecode compiling of files imported by the worker process. This should not be necessary when developing and it was causing the process to restart twice on Windows due to how it handles pyc timestamps.

  • Fix hupper’s support for forwarding stdin to the worker processes on Python < 3.5 on Windows.

  • Fix some possible file descriptor leakage.

  • Simplify the hupper.interfaces.IFileMonitor interface by internalizing some of the hupper-specific integrations. They can now focus on just looking for changes.

  • Add the hupper.interfaces.IFileMonitorFactory interface to improve the documentation for the callback argument required by hupper.interfaces.IFileMonitor.

0.2 (2016-10-26)

  • Windows support!

  • Added support for watchdog if it’s installed to do inotify-style file monitoring. This is an optional dependency and hupper will fallback to using polling if it’s not available.

0.1 (2016-10-21)

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hupper-0.4.1.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

hupper-0.4.1-py2.py3-none-any.whl (17.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file hupper-0.4.1.tar.gz.

File metadata

  • Download URL: hupper-0.4.1.tar.gz
  • Upload date:
  • Size: 27.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for hupper-0.4.1.tar.gz
Algorithm Hash digest
SHA256 7d6eda2bb54a35f0045122de80354711f4eeaeeb625bbedc5410f826b2aa1457
MD5 18c3cf6ee830983a8bfffa7ff4956680
BLAKE2b-256 dfe8b5a87b4878e8b67bd57354d6c6856d37aa261a676add4d9480c8e21ce245

See more details on using hashes here.

File details

Details for the file hupper-0.4.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for hupper-0.4.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 cb4d9ee275255a7ae7451894d7c8717563f8be9711dc6e684c1e480589f3a362
MD5 b1a11dbfe5b399ac04b4d282aa5ab009
BLAKE2b-256 f516f61444c95434ec2bcc0e3ada2b59ae14342ffbd908f55c65bf1630aee93f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page