{"id":13498103,"url":"https://github.com/miguelgrinberg/flack","last_synced_at":"2025-04-05T06:08:03.134Z","repository":{"id":8492291,"uuid":"58573715","full_name":"miguelgrinberg/flack","owner":"miguelgrinberg","description":"Companion code to my PyCon 2016 \"Flask at Scale\" tutorial session.","archived":false,"fork":false,"pushed_at":"2022-07-06T20:04:29.000Z","size":77,"stargazers_count":503,"open_issues_count":7,"forks_count":137,"subscribers_count":21,"default_branch":"master","last_synced_at":"2024-05-02T04:53:06.737Z","etag":null,"topics":["celery","flask","flask-socketio","scale"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miguelgrinberg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-11T19:16:47.000Z","updated_at":"2024-04-12T19:43:17.000Z","dependencies_parsed_at":"2022-09-12T01:51:13.086Z","dependency_job_id":null,"html_url":"https://github.com/miguelgrinberg/flack","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelgrinberg%2Fflack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelgrinberg%2Fflack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelgrinberg%2Fflack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelgrinberg%2Fflack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miguelgrinberg","download_url":"https://codeload.github.com/miguelgrinberg/flack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289409,"owners_count":20914464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["celery","flask","flask-socketio","scale"],"created_at":"2024-07-31T20:00:50.849Z","updated_at":"2025-04-05T06:08:03.108Z","avatar_url":"https://github.com/miguelgrinberg.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Flask At Scale Tutorial at PyCon 2016\n\nThis repository contains the companion code to my PyCon 2016 \"Flask At Scale\"\nclass.\n\n**IMPORTANT NOTE**: The initial commit in this repository has a version of\nthis application that has a few scalability problems discussed during class.\nThese problems are addressed in subsequent commits.\n\n## Installation\n\nAll the code and examples were tested on Python 3.5. Older versions of Python\nincluding 2.7 will likely work as well.\n\nAs usual, create a virtual environment and install the requirements with pip.\n\n    pip install -r requirements.txt\n\n## Running\n\nThe application uses Flask-Script to simplify common tasks such as creating the\ndatabase and starting a development server. Right after you install the \napplication, you need to create a database for it with this command:\n\n    python manage.py createdb\n\nAfter that, you can run the application with the following command:\n\n    python manage.py runserver\n\nYou can add `--help` to see what other start up options are available.\n\nThe second component is a message queue, which you need to run as a service. By\ndefault, a Redis server running on localhost on the default port is assumed. If\nyou want to use a different message queue, or a different configuration for\nRedis, then set the `CELERY_BROKER_URL` environment variable to the message\nqueue connection URL. See the Celery documentation for information on\nconnection URLs.\n\nThe final component of this application is the Celery workers, which must be\nstarted after the message queue is running with the following command:\n\n    python manage.py celery\n\nIf you want to have more verbose output from the workers you can add\n`--loglevel=info` to the command above.\n\n\n##  Usage\n\nThat application allows multiple users to chat online. You can launch the\napplication on your browser by typing `http://127.0.0.1:5000` on the address\nbar.\n\nSince authentication is not a topic in this class, I've decided to use a\nsimplified flow that combines the registration and login forms in one. If you\nare a new user, enter your chosen nickname and password to register. If the\nnickname was not seen before the server will register you. If you are a\nreturning user, provide your login in the same form. If the nickname is\nregistered then the password will be validated.\n\nOnce you are logged in you can type messages in the bottom text entry field,\nand these messages will be seen by all other users. You can use simple\nMarkDown formatting to add style to your messages. If you enter any links as\npart of your message, these will be shown in expanded form below the message.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiguelgrinberg%2Fflack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiguelgrinberg%2Fflack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiguelgrinberg%2Fflack/lists"}