Go to file
Mateusz Mandera e883ab057f upload: Cache the boto client to improve performance.
Fixes #18915

This was very slow, causing performance issues. After investigating,
generate_presigned_url is the cheap part of this, but the
session.client() call is expensive - so that's what we should cache.

Before the change:
```
In [4]: t = time.time()
   ...: for i in range(250):
   ...:     x = u.get_public_upload_url("foo")
   ...: print(time.time()-t)
6.408717393875122
```

After:
```
In [4]: t = time.time()
   ...: for i in range(250):
   ...:     x = u.get_public_upload_url("foo")
   ...: print(time.time()-t)
0.48990607261657715
```

This is not good enough to avoid doing something ugly like replacing
generate_presigned_url with some manual URL manipulation, but it's a
helpful structure that we may find useful with further refactoring.
2021-06-22 09:35:19 -07:00
.github ci: Add prod upgrade step to prod suite. 2021-06-21 10:15:24 -07:00
.tx cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
analytics analytics: Rename get_activity to get_installation_activity. 2021-06-17 17:39:28 -07:00
confirmation python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
corporate billing: Move exempt_from_from_license_number_check to Customer model. 2021-06-18 14:05:42 -07:00
docs docs: Mention about test_example.py in testing-docs. 2021-06-20 07:16:35 -04:00
frontend_tests refactor: Use variables to get TypeScript type narrowing. 2021-06-22 09:09:36 -07:00
locale i18n: Update translation data from Transifex. 2021-05-27 00:13:49 -07:00
pgroonga pgroonga: Remove unnecessary code from first migration. 2021-05-28 09:42:33 -07:00
puppet puppet: Remove zulip_deliver_scheduled_* from zulip-workers:*. 2021-06-14 17:12:59 -07:00
requirements requirements: Upgrade Python requirements. 2021-06-07 17:57:51 -07:00
scripts script: Add --no-headings option to purge-old-deployments. 2021-06-17 15:49:23 -07:00
static ts: Convert spoilers module to TypeScript. 2021-06-22 09:14:09 -07:00
stubs requirements: Upgrade mypy to 0.790. 2020-11-12 15:44:30 -08:00
templates help: Briefly document new tabs in full profile. 2021-06-21 17:21:24 -07:00
tools ts: Convert spoilers module to TypeScript. 2021-06-22 09:14:09 -07:00
var/puppeteer puppeteer_tests: Port to TypeScript. 2021-02-22 16:03:10 -08:00
zerver upload: Cache the boto client to improve performance. 2021-06-22 09:35:19 -07:00
zilencer rundjangoserver: Filter stdout instead of forking the code. 2021-05-24 18:54:47 -07:00
zproject urls: Add redirect for community_topic_edits rename. 2021-06-16 15:07:16 -07:00
.browserslistrc browserslist: Drop 0.2% usage threshold to 0.15%. 2020-09-28 10:57:49 -07:00
.codecov.yml codecov: Change threshold to use percentage syntax. 2019-07-20 14:37:04 -07:00
.editorconfig lint: Add shfmt as a linter. 2020-10-15 15:16:00 -07:00
.eslintignore requirements: Remove Thumbor. 2021-05-06 20:07:32 -07:00
.eslintrc.json ts: Convert blueslip module to TypeScript. 2021-06-22 09:09:36 -07:00
.gitattributes Revert "gitattributes: Mark yarn.lock as "binary", i.e. suppress diffs." 2019-05-20 19:31:14 -07:00
.gitignore docs: Fix capitalization mistakes. 2021-05-10 09:57:26 -07:00
.gitlint lint: Re-enable imperative-mood checking. 2021-02-23 14:54:07 -08:00
.mailmap mailmap: Document Alya's old email address. 2021-04-01 11:24:03 -07:00
.npmignore
.prettierignore lint: Use Prettier for JSON files. 2020-07-24 09:42:56 -07:00
.pyre_configuration pysa: Update .pyre_configuration to point to typeshed. 2020-09-22 15:44:47 -07:00
.sonarcloud.properties tools: Configure Zulip to be scannable by SonarCloud. 2020-06-24 12:41:17 -07:00
.yarnrc .yarnrc: Set ignore-scripts true. 2019-08-28 16:15:54 -07:00
CODE_OF_CONDUCT.md docs: Remove dead link to citizencodeofconduct.org. 2021-04-09 12:10:42 -07:00
CONTRIBUTING.md docs: Mention GitHub sponsors in contributing guide. 2021-03-23 15:57:25 -07:00
Dockerfile-postgresql docs: Standardize on PostgreSQL, not Postgres. 2020-10-28 11:55:16 -07:00
LICENSE license: Move copyright notice from LICENSE to NOTICE. 2021-02-05 09:28:12 -08:00
NOTICE docs: Bump copyright year. 2021-02-05 09:28:15 -08:00
README.md readme: Add GitHub sponsors badge in README. 2021-03-23 15:56:46 -07:00
SECURITY.md docs: Replace legacy roadmap.md with release lifecycle page. 2021-05-05 09:08:43 -07:00
Vagrantfile shell: Replace ‘which’ utility with ‘command -v’ shell builtin. 2021-05-07 08:54:41 -07:00
babel.config.js i18n: Initialize FormatJS. 2021-04-13 17:41:10 -07:00
manage.py manage: Restore `changepassword` back to documented_commands. 2021-06-18 09:11:01 -07:00
mypy.ini mypy: Enable strict_equality. 2021-04-13 11:18:52 -07:00
package.json eslint: Add eslint-plugin-formatjs. 2021-06-13 22:32:40 -07:00
postcss.config.js eslint: Fix import/extensions. 2021-06-08 10:15:52 -07:00
prettier.config.js casper: Remove few traces of casper. 2020-08-30 17:16:02 -07:00
pyproject.toml isort: Move configuration into pyproject.toml. 2021-03-04 18:03:30 -08:00
setup.cfg pycodestyle: Improve comments documenting excludes. 2021-02-12 13:11:25 -08:00
stylelint.config.js styles: Consistently use generic fallback font families. 2021-04-05 15:18:41 -07:00
tsconfig.json ts: Convert i18n module to TypeScript. 2021-06-22 09:09:36 -07:00
version.py models: Replace allow_community_topic_editing with edit_topic_policy. 2021-06-16 14:59:36 -07:00
webpack.config.ts webpack: Fix run-dev.py --minify. 2021-06-10 17:26:55 -07:00
yarn.lock eslint: Add eslint-plugin-formatjs. 2021-06-13 22:32:40 -07:00

README.md

Zulip overview

Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 700 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.

GitHub Actions build status coverage status Mypy coverage code style: black code style: prettier GitHub release docs Zulip chat Twitter GitHub Sponsors

Getting started

Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!

You might be interested in:

You may also be interested in reading our blog or following us on Twitter. Zulip is distributed under the Apache 2.0 license.