-
Notifications
You must be signed in to change notification settings - Fork 0
/
faq.html
74 lines (73 loc) · 37.4 KB
/
faq.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>FAQ | Bocadillo</title>
<meta name="description" content="Fast, scalable and real-time capable web APIs for everyone: Bocadillo is a Python asynchronous web framework built with productivity and modularity in mind.">
<link rel="stylesheet" href="/octicons.css">
<link rel="shortcut icon" href="/favicon.ico?v=lk90Ny5lbz">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=lk90Ny5lbz">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=lk90Ny5lbz">
<link rel="manifest" href="/site.webmanifest?v=lk90Ny5lbz">
<meta name="theme-color" content="#ffe66b">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=lk90Ny5lbz">
<link rel="mask-icon" href="/safari-pinned-tab.svg?v=lk90Ny5lbz" color="#91ba3f">
<meta name="msapplication-TileColor" content="#ef9a4d">
<meta name="twitter:card" content="summary">
<meta name="twitter:url" content="https://bocadilloproject.github.io">
<meta name="twitter:title" content="Bocadillo">
<meta name="twitter:site" content="@bocadillopy">
<meta name="twitter:creator" content="Florimond Manca">
<meta name="twitter:description" content="Fast, scalable and real-time capable web APIs for everyone: Bocadillo is a Python asynchronous web framework built with productivity and modularity in mind.">
<meta name="twitter:image" content="https://bocadilloproject.github.io/logo.png">
<meta name="google-site-verification" content="xbJzBKn7IuLWAUKvqHo1c3vMelw3eTRL0k3JcKjYB_k">
<link rel="preload" href="/assets/css/0.styles.1610f5ec.css" as="style"><link rel="preload" href="/assets/js/app.ef5a74fe.js" as="script"><link rel="preload" href="/assets/js/2.741e5c13.js" as="script"><link rel="preload" href="/assets/js/22.60c6ec4e.js" as="script"><link rel="preload" href="/assets/js/62.55269a82.js" as="script"><link rel="preload" href="/assets/js/25.3476451e.js" as="script"><link rel="preload" href="/assets/js/24.6ab6ed9a.js" as="script"><link rel="preload" href="/assets/js/28.df3b3176.js" as="script"><link rel="preload" href="/assets/js/30.27a29de9.js" as="script"><link rel="prefetch" href="/assets/js/1.28623c5a.js"><link rel="prefetch" href="/assets/js/10.9e1006c4.js"><link rel="prefetch" href="/assets/js/100.764c96c8.js"><link rel="prefetch" href="/assets/js/101.79200541.js"><link rel="prefetch" href="/assets/js/102.2e1407e3.js"><link rel="prefetch" href="/assets/js/103.7830dd4a.js"><link rel="prefetch" href="/assets/js/104.52455b7e.js"><link rel="prefetch" href="/assets/js/105.fa552a9f.js"><link rel="prefetch" href="/assets/js/106.81313cd4.js"><link rel="prefetch" href="/assets/js/11.bdeaccad.js"><link rel="prefetch" href="/assets/js/12.fea470ff.js"><link rel="prefetch" href="/assets/js/13.39d7df02.js"><link rel="prefetch" href="/assets/js/14.c9927eee.js"><link rel="prefetch" href="/assets/js/15.87e26629.js"><link rel="prefetch" href="/assets/js/16.6281a5f1.js"><link rel="prefetch" href="/assets/js/17.3dc8666b.js"><link rel="prefetch" href="/assets/js/18.b93d182a.js"><link rel="prefetch" href="/assets/js/19.8093f59d.js"><link rel="prefetch" href="/assets/js/20.f6778ebc.js"><link rel="prefetch" href="/assets/js/21.83002d33.js"><link rel="prefetch" href="/assets/js/23.fecdc752.js"><link rel="prefetch" href="/assets/js/26.be460c24.js"><link rel="prefetch" href="/assets/js/27.78500487.js"><link rel="prefetch" href="/assets/js/29.171eca5b.js"><link rel="prefetch" href="/assets/js/31.c1e5ed6c.js"><link rel="prefetch" href="/assets/js/32.43e6bd89.js"><link rel="prefetch" href="/assets/js/33.47234724.js"><link rel="prefetch" href="/assets/js/34.8f883d10.js"><link rel="prefetch" href="/assets/js/35.886bf2d6.js"><link rel="prefetch" href="/assets/js/36.d74a4b45.js"><link rel="prefetch" href="/assets/js/37.5f147823.js"><link rel="prefetch" href="/assets/js/38.6882e29b.js"><link rel="prefetch" href="/assets/js/39.b016911e.js"><link rel="prefetch" href="/assets/js/4.9e306066.js"><link rel="prefetch" href="/assets/js/40.2fc0e4ef.js"><link rel="prefetch" href="/assets/js/41.3f8233d4.js"><link rel="prefetch" href="/assets/js/42.bb51a16e.js"><link rel="prefetch" href="/assets/js/43.64c511ad.js"><link rel="prefetch" href="/assets/js/44.2fd79fd9.js"><link rel="prefetch" href="/assets/js/45.ef1889bb.js"><link rel="prefetch" href="/assets/js/46.faed4535.js"><link rel="prefetch" href="/assets/js/47.c5a1fd71.js"><link rel="prefetch" href="/assets/js/48.3f137c5f.js"><link rel="prefetch" href="/assets/js/49.107fe3f3.js"><link rel="prefetch" href="/assets/js/5.6d0d80f9.js"><link rel="prefetch" href="/assets/js/50.16babc94.js"><link rel="prefetch" href="/assets/js/51.a761ac95.js"><link rel="prefetch" href="/assets/js/52.b3da75d6.js"><link rel="prefetch" href="/assets/js/53.cb224ef5.js"><link rel="prefetch" href="/assets/js/54.5fd0de3b.js"><link rel="prefetch" href="/assets/js/55.c68c0838.js"><link rel="prefetch" href="/assets/js/56.b86c9cfc.js"><link rel="prefetch" href="/assets/js/57.9a875cd5.js"><link rel="prefetch" href="/assets/js/58.d25974a5.js"><link rel="prefetch" href="/assets/js/59.4229b9d5.js"><link rel="prefetch" href="/assets/js/6.9de27215.js"><link rel="prefetch" href="/assets/js/60.190f9994.js"><link rel="prefetch" href="/assets/js/61.a6787cb1.js"><link rel="prefetch" href="/assets/js/63.d16c0a81.js"><link rel="prefetch" href="/assets/js/64.de71f4d5.js"><link rel="prefetch" href="/assets/js/65.ec533d3e.js"><link rel="prefetch" href="/assets/js/66.3ca3058a.js"><link rel="prefetch" href="/assets/js/67.8f39d473.js"><link rel="prefetch" href="/assets/js/68.5f1bfdf2.js"><link rel="prefetch" href="/assets/js/69.8a5ee484.js"><link rel="prefetch" href="/assets/js/7.baf0b149.js"><link rel="prefetch" href="/assets/js/70.cae2620c.js"><link rel="prefetch" href="/assets/js/71.88c976be.js"><link rel="prefetch" href="/assets/js/72.0608759c.js"><link rel="prefetch" href="/assets/js/73.30825c52.js"><link rel="prefetch" href="/assets/js/74.f3a4653a.js"><link rel="prefetch" href="/assets/js/75.f076bac4.js"><link rel="prefetch" href="/assets/js/76.b9cf5ea6.js"><link rel="prefetch" href="/assets/js/77.664fe172.js"><link rel="prefetch" href="/assets/js/78.bb705f3f.js"><link rel="prefetch" href="/assets/js/79.755a16c1.js"><link rel="prefetch" href="/assets/js/8.1430bdec.js"><link rel="prefetch" href="/assets/js/80.3b3c943c.js"><link rel="prefetch" href="/assets/js/81.8dfcf1f4.js"><link rel="prefetch" href="/assets/js/82.e0d8b8bf.js"><link rel="prefetch" href="/assets/js/83.8e788d4e.js"><link rel="prefetch" href="/assets/js/84.e62a4140.js"><link rel="prefetch" href="/assets/js/85.7de9077f.js"><link rel="prefetch" href="/assets/js/86.36b0b794.js"><link rel="prefetch" href="/assets/js/87.88eaed47.js"><link rel="prefetch" href="/assets/js/88.12e8bfee.js"><link rel="prefetch" href="/assets/js/89.79671657.js"><link rel="prefetch" href="/assets/js/9.fff42a24.js"><link rel="prefetch" href="/assets/js/90.7770f14c.js"><link rel="prefetch" href="/assets/js/91.34595596.js"><link rel="prefetch" href="/assets/js/92.d0e2a53f.js"><link rel="prefetch" href="/assets/js/93.0dd1d80f.js"><link rel="prefetch" href="/assets/js/94.224315b4.js"><link rel="prefetch" href="/assets/js/95.6a720b9e.js"><link rel="prefetch" href="/assets/js/96.f8e2cc61.js"><link rel="prefetch" href="/assets/js/97.6ace73bc.js"><link rel="prefetch" href="/assets/js/98.3851eb39.js"><link rel="prefetch" href="/assets/js/99.4f065790.js">
<link rel="stylesheet" href="/assets/css/0.styles.1610f5ec.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">Bocadillo</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/guide/" class="nav-link">Guide</a></div><div class="nav-item"><a href="/how-to/" class="nav-link">How-To</a></div><div class="nav-item"><a href="/discussions/" class="nav-link">Discussions</a></div><div class="nav-item"><a href="/api/" class="nav-link">Reference</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Ecosystem</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>Tooling</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://github.com/bocadilloproject/bocadillo-cli" target="_blank" rel="noopener noreferrer" class="nav-link external">
Bocadillo CLI
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li class="dropdown-item"><h4>Help</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/faq.html" class="nav-link router-link-exact-active router-link-active">FAQ</a></li><li class="dropdown-subitem"><a href="/troubleshooting.html" class="nav-link">Troubleshooting</a></li></ul></li><li class="dropdown-item"><h4>News</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://twitter.com/bocadillopy" target="_blank" rel="noopener noreferrer" class="nav-link external">
Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-subitem"><a href="/news/" class="nav-link">News</a></li><li class="dropdown-subitem"><a href="/mentions.html" class="nav-link">Mentions</a></li></ul></li><li class="dropdown-item"><h4>Resources</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://github.com/bocadilloproject/bocadillo/blob/master/CHANGELOG.md" target="_blank" rel="noopener noreferrer" class="nav-link external">
Changelog
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-subitem"><a href="https://pypi.org/project/bocadillo/" target="_blank" rel="noopener noreferrer" class="nav-link external">
PyPI
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-subitem"><a href="https://github.com/bocadilloproject" target="_blank" rel="noopener noreferrer" class="nav-link external">
Official repos
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul></div></div> <a href="https://github.com/bocadilloproject/bocadillo" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/guide/" class="nav-link">Guide</a></div><div class="nav-item"><a href="/how-to/" class="nav-link">How-To</a></div><div class="nav-item"><a href="/discussions/" class="nav-link">Discussions</a></div><div class="nav-item"><a href="/api/" class="nav-link">Reference</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Ecosystem</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>Tooling</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://github.com/bocadilloproject/bocadillo-cli" target="_blank" rel="noopener noreferrer" class="nav-link external">
Bocadillo CLI
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li class="dropdown-item"><h4>Help</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/faq.html" class="nav-link router-link-exact-active router-link-active">FAQ</a></li><li class="dropdown-subitem"><a href="/troubleshooting.html" class="nav-link">Troubleshooting</a></li></ul></li><li class="dropdown-item"><h4>News</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://twitter.com/bocadillopy" target="_blank" rel="noopener noreferrer" class="nav-link external">
Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-subitem"><a href="/news/" class="nav-link">News</a></li><li class="dropdown-subitem"><a href="/mentions.html" class="nav-link">Mentions</a></li></ul></li><li class="dropdown-item"><h4>Resources</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://github.com/bocadilloproject/bocadillo/blob/master/CHANGELOG.md" target="_blank" rel="noopener noreferrer" class="nav-link external">
Changelog
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-subitem"><a href="https://pypi.org/project/bocadillo/" target="_blank" rel="noopener noreferrer" class="nav-link external">
PyPI
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-subitem"><a href="https://github.com/bocadilloproject" target="_blank" rel="noopener noreferrer" class="nav-link external">
Official repos
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul></div></div> <a href="https://github.com/bocadilloproject/bocadillo" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav> <ul class="sidebar-links"><li><a href="/faq.html" class="active sidebar-link">FAQ</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/faq.html#general" class="sidebar-link">General</a></li><li class="sidebar-sub-header"><a href="/faq.html#design-and-api" class="sidebar-link">Design and API</a></li><li class="sidebar-sub-header"><a href="/faq.html#going-live" class="sidebar-link">Going live</a></li><li class="sidebar-sub-header"><a href="/faq.html#getting-in-touch" class="sidebar-link">Getting in touch</a></li></ul></li></ul> </aside> <main class="page"> <div class="content deprecation-warning" style="margin:1rem;margin-top:4.6rem;" data-v-b1b05e82><p data-v-b1b05e82><strong data-v-b1b05e82>Warning:</strong> Bocadillo is now <strong data-v-b1b05e82>UNMAINTAINED</strong>.
Users are recommended to migrate to a supported alternative, such as
<a href="https://www.starlette.io" target="_blank" rel="noreferrer" data-v-b1b05e82>Starlette</a>
or
<a href="https://fastapi.tiangolo.com" target="_blank" rel="noreferrer" data-v-b1b05e82>FastAPI</a>. Please see
<a href="https://github.com/bocadilloproject/bocadillo/issues/334" target="_blank" rel="noreferrer" data-v-b1b05e82>#344</a>
for more information.
</p></div> <div class="theme-default-content content__default"><h1 id="faq"><a href="#faq" aria-hidden="true" class="header-anchor">#</a> FAQ</h1> <h2 id="general"><a href="#general" aria-hidden="true" class="header-anchor">#</a> General</h2> <h3 id="why-does-this-project-even-exist"><a href="#why-does-this-project-even-exist" aria-hidden="true" class="header-anchor">#</a> Why does this project even exist?</h3> <p>Bocadillo was born from a desire to make the best elements of popular WSGI frameworks enter the world of <strong>asynchronous programming</strong>.</p> <p>Our dream is to create a framework where it is as easy to work with a database as in Django, to build a REST API as in Falcon, and to get started as in Flask — all this while leveraging modern async Python to build concurrent apps that scale and embrace the real-time web.</p> <p>Bocadillo would probably not exist without <a href="https://www.starlette.io" target="_blank" rel="noopener noreferrer">Starlette<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> and <a href="https://www.uvicorn.org" target="_blank" rel="noopener noreferrer">Uvicorn<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>, two open source projects that pioneered the world of <strong>asynchronous web frameworks</strong> and servers.</p> <div class="tip custom-block"><p class="custom-block-title">MAINTAINER'S NOTE</p> <p>I've written a blog post called <a href="https://blog.florimond.dev/how-i-built-a-web-framework-and-became-an-open-source-maintainer" target="_blank" rel="noopener noreferrer">How I Built A Python Web Framework And Became An Open Source Maintainer<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>.</p> <p>Some of the facts may be outdated by now, but if you're interested in the more personal story behind Bocadillo or seek tips on how to start your own open source project, I believe you'll enjoy the read.</p> <p>— <a href="https://twitter.com/FlorimondManca" target="_blank" rel="noopener noreferrer">@FlorimondManca<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p></div> <h3 id="why-bocadillo-and-how-do-you-pronounce-it"><a href="#why-bocadillo-and-how-do-you-pronounce-it" aria-hidden="true" class="header-anchor">#</a> Why "Bocadillo", and how do you pronounce it?</h3> <p>Bocadillo is named after the Spanish word: <em>bocadillo</em>.</p> <p>It is pronounced the Castilian Spanish way: <em><strong>bo-kah-DEE-yo</strong></em> (or <code>/bokaˈðiʝo/</code> for phonetics enthusiasts).</p> <p>In Spain, a <em>bocadillo</em> is a sandwich made with baguette or a similar type of bread, and filled with a mix of ingredients including meat, vegetables or even omelette.</p> <p>Its simplicity and low cost allowed it to thrive, become an iconic piece of Spanish cuisine and take over the world as a fast-and-healthy meal. It is also the name of a Columbian sugar confection also known as Guava jelly.</p> <p>This name was chosen because it is short, easy to remember, and reminiscent that web frameworks should be fun, easy to use, and allow to build delicious systems from simple ingredients.</p> <h3 id="is-bocadillo-stable"><a href="#is-bocadillo-stable" aria-hidden="true" class="header-anchor">#</a> Is Bocadillo stable?</h3> <p>Although most of its core architecture and features probably won't change much, Bocadillo is still in its early days and some changes may be brought to the framework if we deem it necessary. This has happened in the past, and may happen again. We will of course follow best practices and resort to a deprecation cycle if the change is too important to be released out of the blue.</p> <h3 id="who-uses-bocadillo"><a href="#who-uses-bocadillo" aria-hidden="true" class="header-anchor">#</a> Who uses Bocadillo?</h3> <p>Visionaries, outsiders, and geeks. That's our wildest guess, at least.</p> <p>As of today, async is very niche in the Python community. Still, we're pretty confident of the value it can bring in terms of performance, scalability and unique features in the realm of web frameworks.</p> <p>So, if you're using Bocadillo for a cool project or even in production (wow!), show off! We'd love to <a href="#how-can-i-contact-maintainers">hear from you</a>.</p> <h3 id="what-s-coming-next"><a href="#what-s-coming-next" aria-hidden="true" class="header-anchor">#</a> What's coming next?</h3> <p>We have tons of ideas on making Bocadillo better. Check out our <a href="https://github.com/bocadilloproject/bocadillo/issues" target="_blank" rel="noopener noreferrer">GitHub issues<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> for a few hints on what's to expect in the short-to-long term. If you have ideas yourself, be sure to come and discuss them with us, e.g. by <a href="https://github.com/bocadilloproject/bocadillo/issues/new/choose" target="_blank">
opening an issue on GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>.</p> <h2 id="design-and-api"><a href="#design-and-api" aria-hidden="true" class="header-anchor">#</a> Design and API</h2> <h3 id="why-pass-the-request-and-response-around-everywhere"><a href="#why-pass-the-request-and-response-around-everywhere" aria-hidden="true" class="header-anchor">#</a> Why pass the request and response around everywhere?</h3> <p>At the fundamental level, an HTTP server application takes an HTTP request as input and <em>returns</em> an HTTP response. Many frameworks have implemented this style with great success.</p> <p>In Bocadillo however, you may have noticed that HTTP views don't <em>return</em> a <code>Response</code>.</p> <p>Instead, they are given the <code>Request</code> object (nothing outstanding there) <em>and</em> the <code>Response</code> object. Inside a view, the response is <em>mutated</em> as seems fit. Why?</p> <p>This idea was inspired to us by <a href="https://falcon.readthedocs.io/en/stable/user/tutorial.html#creating-resources" target="_blank" rel="noopener noreferrer">Falcon's "responders"<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>. In Bocadillo, the <code>Response</code> object is very much a <strong>response builder</strong> instead of an actual HTTP response. Which attributes were set and methods were called on the builder determines what the HTTP response effectively sent over the wire will contain.</p> <p>We cannot state that this is a better approach, but we do find a few interesting benefits in it.</p> <p>The main benefit is that of providing a <strong>simpler interface</strong> to you, the developer, while making this interface easy to maintain and easy to extend.</p> <p>For example, instead of dealing with multiple types of responses (such as <code>PlainTextResponse</code>, <code>JSONResponse</code>, <code>StreamingResponse</code>, etc.), you have only one — the response builder.</p> <p>Lastly, without this approach we probably wouldn't have been able to implement a pleasant enough API for background tasks or streaming responses. In fact, this is true for any feature that relies on using an attribute, a method or a decorator attached to the <code>Response</code> object.</p> <h3 id="how-fast-is-bocadillo"><a href="#how-fast-is-bocadillo" aria-hidden="true" class="header-anchor">#</a> How fast is Bocadillo?</h3> <p>Quite fast, according to <a href="https://github.com/the-benchmarker/web-frameworks" target="_blank" rel="noopener noreferrer">benchmarks<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>. Optimizing for speed has not been the primary focus so far, but improving it will definitely be considered as the project stabilizes.</p> <h2 id="going-live"><a href="#going-live" aria-hidden="true" class="header-anchor">#</a> Going live</h2> <h3 id="is-bocadillo-production-ready-yet"><a href="#is-bocadillo-production-ready-yet" aria-hidden="true" class="header-anchor">#</a> Is Bocadillo production-ready yet?</h3> <p>We wouldn't go as far as saying so. Only experience will tell. However, if you are using Bocadillo in production already, <a href="#how-can-i-contact-maintainers">let us know</a>!</p> <h3 id="do-bocadillo-applications-scale"><a href="#do-bocadillo-applications-scale" aria-hidden="true" class="header-anchor">#</a> Do Bocadillo applications scale?</h3> <p>Yes, they do in many ways.</p> <p>Bocadillo being an async framework, you get client concurrency for free, which can help increase request throughput in case that your application is IO-intensive.</p> <p>Plus, by running Bocadillo using a process manager, you can run multiple processes per machine, further increasing the single-machine throughput.</p> <p>Other than that, a Bocadillo application can be scaled up and out as any other web app.</p> <div class="tip custom-block"><p>For hints on deploying Bocadillo applications, see the <a href="/discussions/deployment.html">Deployment</a> guide.</p></div> <h3 id="do-i-need-to-run-bocadillo-behind-a-reverse-proxy-such-as-nginx"><a href="#do-i-need-to-run-bocadillo-behind-a-reverse-proxy-such-as-nginx" aria-hidden="true" class="header-anchor">#</a> Do I need to run Bocadillo behind a reverse proxy such as Nginx?</h3> <p>No, you don't <em>have</em> to.</p> <p>Bocadillo already serves static files efficiently for you using <a href="http://whitenoise.evans.io/en/stable/" target="_blank" rel="noopener noreferrer">WhiteNoise<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>, and if you're using a process manager like Gunicorn you should be just fine.</p> <h2 id="getting-in-touch"><a href="#getting-in-touch" aria-hidden="true" class="header-anchor">#</a> Getting in touch</h2> <h3 id="how-can-i-get-help"><a href="#how-can-i-get-help" aria-hidden="true" class="header-anchor">#</a> How can I get help?</h3> <p>If you're looking for help, or something's not working, you can <a href="https://github.com/bocadilloproject/bocadillo/issues" target="_blank" rel="noopener noreferrer">browse through issues<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>. If your problem hasn't been discussed before, feel free to <a href="https://github.com/bocadilloproject/bocadillo/issues/new/choose" target="_blank">
open an issue
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>. Maintainers will tag is as a "question" and community members will probably get back to you. Remember: be nice, polite, and clearly explain the problem you are having. If nobody answers your question, try making it more specific or give it more time.</p> <h3 id="i-think-i-ve-found-a-bug-what-should-i-do"><a href="#i-think-i-ve-found-a-bug-what-should-i-do" aria-hidden="true" class="header-anchor">#</a> I think I've found a bug! What should I do?</h3> <p>The first step would be to verify it can be reproduced, and then <a href="https://github.com/bocadilloproject/bocadillo/issues/new/choose" target="_blank">
open an issue on GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>.</p> <p>If you're willing to help fix the bug, detailed instructions can be found in the <a href="https://github.com/bocadilloproject/bocadillo/master/blob/CONTRIBUTING.md" target="_blank">
Contributing guide
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>.</p> <div class="warning custom-block"><p>If the bug is related to security, <strong>do not</strong> publicly reveal the information. We need to handle this privately first, so consider <a href="#how-can-i-contact-maintainers">contacting a maintainer</a>.</p></div> <h3 id="how-can-i-contact-maintainers"><a href="#how-can-i-contact-maintainers" aria-hidden="true" class="header-anchor">#</a> How can I contact maintainers?</h3> <p>If you've got anything else to tell us, you can reach out on Twitter. Our official account is <a href="https://twitter.com/bocadillopy" target="_blank">
@bocadillopy
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>.</p></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/bocadilloproject/bocadillo/edit/release/docs/docs/faq.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div> <div class="last-updated"><span class="prefix">Last Updated: </span> <span class="time">6/18/2019, 6:04:25 PM</span></div></footer> <!----> </main></div><div class="global-ui"></div></div>
<script src="/assets/js/app.ef5a74fe.js" defer></script><script src="/assets/js/2.741e5c13.js" defer></script><script src="/assets/js/22.60c6ec4e.js" defer></script><script src="/assets/js/62.55269a82.js" defer></script><script src="/assets/js/25.3476451e.js" defer></script><script src="/assets/js/24.6ab6ed9a.js" defer></script><script src="/assets/js/28.df3b3176.js" defer></script><script src="/assets/js/30.27a29de9.js" defer></script>
</body>
</html>