Skip to main content

FMN is a family of systems to manage end-user notifications triggered by fedmsg, the Federated Message bus.

The FMN Server-Sent Events server allows users to view their fedmsg feed in realtime using [server-sent events](https://html.spec.whatwg.org/multipage/comms.html#server-sent-events). It relies on a service to populate the RabbitMQ message queues for it. Typically, this is done with the FMN core services.

## Install

To get fmn.sse directly from PyPi you can use pip:

` pip install fmn.sse `

If you’re using Fedora, you can install it with DNF:

` sudo dnf install python-fmn-sse `

If you’re using CentOS 7, you can install it from EPEL 7 with yum:

` sudo yum install python-fmn-sse `

## Development Environment

To set up the development environment, you can either use Vagrant to provision a virtual machine and automatically configure it, or you can manually set up the environment.

### Vagrant

The easiest way to get a development environment set up is with Vagrant. Refer to the [fmn repository](https://github.com/fedora-infra/fmn) for the Vagrantfile and instructions on how to set up Vagrant.

### Manual

1. Install the system dependencies. For Fedora: ` sudo dnf install python python-devel python3-devel python-virtualenvwrapper \ rabbitmq-server python-pip gcc libffi-devel openssl-devel zeromq-devel `

2. Install the Python dependencies: ` pip install -r requirements.txt `

3. Install the fmn.sse package: ` pip install -e . `

## Running

1. Ensure RabbitMQ is running: ` sudo systemctl start rabbitmq-server `

2. Start the SSE server: ` twistd -n -l - -y usr/share/fmn.sse/server.tac `

3. Make sure the server is available. This should return a HTTP 404: ` curl -v http://localhost:8080/ `

## Test Data

` workon sse-py2 pip install pytz python dev-data.py `

## Manual Testing

sse_webserver.py curl seems to work okay for me curl http://localhost:8080/user/bob

and/or

open up sse_test_subscriber.html in a browser and look at the JS console

## Running unittests ` workon sse-py2 python setup.py test `

with coverage

` workon sse-py2 pip install -r requirements-test.txt py.test --cov=fmn tests/ `

### Common issues

Q: I can’t connect to rabbitmq with pika

A: Make sure you are running rabbitmq sudo systemctl start rabbitmq-server

Q: I get the following error ` pika.exceptions.ChannelClosed: (406, "PRECONDITION_FAILED - inequivalent arg 'x-message-ttl' for queue 'skrzepto.id.fedoraproject.org' in vhost '/': received '60000' but current is '86400000'") `

A: You have set the queue a ttl that is not the same. You need to either match the ttl or delete the queue and retry.

Go into http://localhost:15672/ and delete the queue. Thats assuming you enabled the management plugin https://www.rabbitmq.com/management.html

Q: Nothing is being displayed on the curl

A: Wait a few more seconds, it takes a moment to display the data. If it’s more than a minute check to see if the queue has data via the web ui http://localhost:15672/

Metadata

Release files for fmn-sse 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fmn-sse 0.2.1
File Size Uploaded
fmn_sse-0.2.1.tar.gz 16.6 kB Details

Release files / fmn_sse-0.2.1.tar.gz

Download URL fmn_sse-0.2.1.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
bf5be09fe113f326adf15baab7edc53d50bb6deb57d57f36c1c262598bac629d
BLAKE2b-256 checksum
How to use checksums
36b316cee495581b35a2b80505fdb60c86b6e2cf8338db5faeb74acbd88368c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page