Add docs to the src
[frozenviper.git] / docs / google-appengine-docs-20100817 / appengine / kb / general.html
blob36a03ac2dda1050c2db7b280bef2d0fa56313c2c
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
31 <html>
32 <head>
33 <script type="text/javascript" language="JavaScript">
34 ORIGINAL_PAGE_PATH = "/appengine/kb/general.html";
35 </script>
38 <meta http-equiv="content-type" content="text/html; charset=utf-8">
39 <title>Google App Engine General Questions - Google App Engine - Google Code</title>
40 <script type="text/javascript"><!--
41 (function(){function a(){this.t={};this.tick=function(c){this.t[c]=(new Date).getTime()};this.tick("start")}var b=new a;window.jstiming={Timer:a,load:b};if(window.external&&window.external.pageT)window.jstiming.pt=window.external.pageT;})();
43 var _tocPath_ = '/appengine/docs/_toc.ezt';
44 var codesite_token = null;
45 var logged_in_user_email = null;
46 //--></script>
47 <link href="../../css/codesite.pack.04102009.css" type="text/css" rel="stylesheet">
48 <script src="../../js/codesite_head.pack.04102009.js" type="text/javascript"></script>
49 <script type="text/javascript">CODESITE_CSITimer['load'].tick('bhs');</script>
50 <link rel="search" type="application/opensearchdescription+xml" title="Google Code" href="http://code.google.com/osd.xml">
52 <!--[if IE]><link rel="stylesheet" type="text/css" href="../../css/iehacks.css"><![endif]-->
54 <link href="../../css/semantic_headers.css" rel="stylesheet" type="text/css" />
55 <link href="../css/local_extensions.css" rel="stylesheet" type="text/css" />
56 <script src="../js/customtabs.js" type="text/javascript"></script>
57 <script src="../js/ui.tabs.js" type="text/javascript"></script>
58 </head>
60 <body class="gc-documentation">
64 <div id="gb">
65 <span>
67 <a id="lang-dropdown" class="dropdown" href="http://code.google.com" onclick="return false;"><img width="13" height="13" class="globeicon" src="../../images/globe2_small.png"
68 ><span style="text-decoration:underline">English</span> <span style="font-size:.75em;">&#9660;</span></a>
70 </span>
71 </div>
73 <div class="gbh" style="left:0px;"></div>
74 <div class="gbh" style="right:0px;"></div>
76 <div id="gc-container">
77 <a id="top"></a>
78 <div id="skipto">
79 <a href="#gc-pagecontent-anchor">Skip to page content</a>
80 <a href="#gc-toc-anchor">Skip to main navigation</a>
81 </div>
83 <div id="gc-header">
84 <div id="logo"><a href="http://code.google.com">
87 <img src="../../images/code_logo.png" height="40" width="161" alt="Google Code" style="border:0;margin:3px 0 0 0;">
90 </a></div>
91 <div id="search">
92 <div id="searchForm" class="searchForm">
93 <form id="cse" action="http://www.google.com/cse" accept-charset="utf-8" class="gsc-search-box" onsubmit="executeGSearch(document.getElementById('gsearchInput').value); return false;">
94 <noscript>
95 <input type="hidden" name="cref" value="http://code.google.com/cse/googlecode-context.xml">
96 </noscript>
97 <div id="gsc-search-box">
98 <input id="gsearchInput" type="text" name="q" maxlength="2048" class="gsc-input" autocomplete="off" title="Google Code Search" style="width:345px">
99 <div id="cs-searchresults" onclick="event.cancelBubble = true;"></div>
100 <input title="Search" id="gsearchButton" class="gsc-search-button" name="sa" value="Search" type="submit">
101 <div class="greytext">e.g. "templates" or "datastore"</div>
102 </div>
103 </form>
104 </div> <!-- end searchForm -->
105 </div> <!-- end search -->
110 </div> <!-- end gc-header -->
113 <div id="codesiteContent">
115 <a id="gc-topnav-anchor"></a>
116 <div id="gc-topnav">
117 <h1 style="padding:0 0 0 6px;">Google App Engine</h1>
118 <ul id="faq" class="gc-topnav-tabs">
120 <li id="home_link">
121 <a href="../index.html" title="Google App Engine home page">Home</a>
122 </li>
124 <li id="docs_link">
125 <a href="../docs/index.html" title="Official Google App Engine documentation">Docs</a>
126 </li>
128 <li id="faq_link">
129 <a href="index.html" class="selected" title="Answers to frequently asked questions about Google App Engine">FAQ</a>
130 </li>
132 <li id="articles_link">
133 <a href="../articles/index.html" title="Focused articles and tutorials for Google App Engine developers">Articles</a>
134 </li>
136 <li>
137 <a href="http://googleappengine.blogspot.com/" title="Official Google App Engine blog">Blog</a>
138 </li>
140 <li>
141 <a href="../community.html" title="Community home for Google App Engine">Community</a>
142 </li>
144 <li>
145 <a href="../terms.html" title="Google App Engine terms of service">Terms</a>
146 </li>
148 <li>
149 <a href="../downloads.html" title="Download Google App Engine">Download</a>
150 </li>
153 </ul>
154 </div> <!-- end gc-topnav -->
156 <div class="g-section g-tpl-170">
158 <a name="gc-toc-anchor"></a>
159 <div class="g-unit g-first" id="gc-toc">
160 <ul>
161 <li><a href="../downloads.html">Downloads</a></li>
162 <li><a href="http://code.google.com/status/appengine">System Status</a></li>
163 <li><a href="http://code.google.com/p/googleappengine/issues/list">Issue Tracker</a></li>
164 <li><a href="../business/index.html">App Engine for Business</a> <sup class="new">New!</sup></li>
165 </ul>
166 <div class="line"></div>
167 <ul>
168 <li><h2>Getting Started</h2>
169 <ul>
170 <li><a href="../docs/whatisgoogleappengine.html">What Is Google App Engine?</a></li>
171 <li><a href="../docs/java/gettingstarted/index.html">Java</a>
172 <ul>
173 <li><a href="../docs/java/gettingstarted/introduction.html">Introduction</a></li>
174 <li><a href="../docs/java/gettingstarted/installing.html">Installing the Java SDK</a></li>
175 <li><a href="../docs/java/gettingstarted/creating.html">Creating a Project</a></li>
176 <li><a href="../docs/java/gettingstarted/usingusers.html">Using the Users Service</a></li>
177 <li><a href="../docs/java/gettingstarted/usingjsps.html">Using JSPs</a></li>
178 <li><a href="../docs/java/gettingstarted/usingdatastore.html">Using the Datastore with JDO</a></li>
179 <li><a href="../docs/java/gettingstarted/staticfiles.html">Using Static Files</a></li>
180 <li><a href="../docs/java/gettingstarted/uploading.html">Uploading Your Application</a></li>
182 </ul>
183 </li>
184 <li><a href="../docs/python/gettingstarted/index.html">Python</a>
185 <ul>
186 <li><a href="../docs/python/gettingstarted/introduction.html">Introduction</a></li>
187 <li><a href="../docs/python/gettingstarted/devenvironment.html">The Development Environment</a></li>
188 <li><a href="../docs/python/gettingstarted/helloworld.html">Hello, World!</a></li>
189 <li><a href="../docs/python/gettingstarted/usingwebapp.html">Using the webapp Framework</a></li>
190 <li><a href="../docs/python/gettingstarted/usingusers.html">Using the Users Service</a></li>
191 <li><a href="../docs/python/gettingstarted/handlingforms.html">Handling Forms With webapp</a></li>
192 <li><a href="../docs/python/gettingstarted/usingdatastore.html">Using the Datastore</a></li>
193 <li><a href="../docs/python/gettingstarted/templates.html">Using Templates</a></li>
194 <li><a href="../docs/python/gettingstarted/staticfiles.html">Using Static Files</a></li>
195 <li><a href="../docs/python/gettingstarted/uploading.html">Uploading Your Application</a></li>
197 </ul>
198 </li>
199 </ul>
200 </li>
201 </ul>
202 <div class="line"></div>
203 <ul>
204 <li><h2>Java</h2>
205 <ul>
206 <li><a href="../docs/java/overview.html">Overview</a></li>
207 <li><a href="../docs/java/runtime.html">Servlet Environment</a></li>
208 <li><a href="../docs/java/datastore/index.html">Storing Data</a>
209 <ul>
210 <li><a href="../docs/java/datastore/overview.html">Overview</a></li>
211 <li><a href="../docs/java/datastore/usingjdo.html">Using JDO</a></li>
212 <li><a href="../docs/java/datastore/dataclasses.html">Defining Data Classes</a></li>
213 <li><a href="../docs/java/datastore/creatinggettinganddeletingdata.html">Creating, Getting and Deleting Data</a></li>
214 <li><a href="../docs/java/datastore/queriesandindexes.html">Queries and Indexes</a></li>
215 <li><a href="../docs/java/datastore/transactions.html">Transactions</a></li>
216 <li><a href="../docs/java/datastore/relationships.html">Relationships</a></li>
217 <li><a href="../docs/java/datastore/stats.html">Statistics</a></li>
218 <li><a href="../docs/java/datastore/usingjpa.html">Using JPA</a></li>
219 <li><a href="../docs/java/javadoc/com/google/appengine/api/datastore/package-summary.html">Low-level API</a></li>
221 </ul>
222 </li>
223 <li><a href="../docs/java/apis.html">Services</a>
224 <ul>
225 <li><a href="../docs/java/blobstore/index.html">Blobstore</a>
226 <ul>
227 <li><a href="../docs/java/blobstore/overview.html">Overview</a></li>
228 <li><span class="tlw-title tlw-expanded">Reference</span>
229 <ul>
230 <li><a href="../docs/java/javadoc/com/google/appengine/api/blobstore/package-summary.html">API Reference</a></li>
231 </ul>
232 </li>
234 </ul>
235 </li>
236 <li><a href="../docs/java/images/index.html">Images</a>
237 <ul>
238 <li><a href="../docs/java/images/overview.html">Overview</a></li>
239 <li><a href="../docs/java/javadoc/com/google/appengine/api/images/package-summary.html">API Reference</a></li>
241 </ul>
242 </li>
243 <li><a href="../docs/java/mail/index.html">Mail</a>
244 <ul>
245 <li><a href="../docs/java/mail/overview.html">Overview</a></li>
246 <li><a href="../docs/java/mail/usingjavamail.html">Using JavaMail to Send Mail</a></li>
247 <li><a href="../docs/java/mail/receiving.html">Receiving Mail</a></li>
248 <li><a href="../docs/java/javadoc/com/google/appengine/api/mail/package-summary.html">Low-level API</a></li>
250 </ul>
251 </li>
252 <li><a href="../docs/java/memcache/index.html">Memcache</a>
253 <ul>
254 <li><a href="../docs/java/memcache/overview.html">Overview</a></li>
255 <li><a href="../docs/java/memcache/usingjcache.html">Using JCache</a></li>
256 <li><a href="../docs/java/javadoc/com/google/appengine/api/memcache/package-summary.html">Low-level API</a></li>
258 </ul>
259 </li>
260 <li><a href="../docs/java/multitenancy/index.html">Multitenancy</a>
261 <ul>
262 <li><a href="../docs/java/multitenancy/overview.html">Overview</a></li>
263 <li><a href="../docs/java/multitenancy/multitenancy.html">Multitenancy with Namespaces</a></li>
264 <li><a href="../docs/java/multitenancy/namespaces.html">Other Uses for Namespaces</a></li>
265 <li><a href="../docs/java/javadoc/com/google/appengine/api/NamespaceManager.html">API Reference</a>
267 </ul>
268 </li>
269 <li><a href="../docs/java/oauth/index.html">OAuth</a>
270 <ul>
271 <li><a href="../docs/java/oauth/overview.html">Overview</a></li>
272 <li><a href="../docs/java/javadoc/com/google/appengine/api/oauth/package-summary.html">API Reference</a></li>
275 </ul>
276 </li>
277 <li><a href="../docs/java/taskqueue/index.html">Task Queues</a>
278 <ul>
279 <li><a href="../docs/java/taskqueue/overview.html">Overview</a></li>
280 <li><a href="../docs/java/javadoc/com/google/appengine/api/labs/taskqueue/package-summary.html">API Reference</a></li>
282 </ul>
283 </li>
284 <li><a href="../docs/java/urlfetch/index.html">URL Fetch</a>
285 <ul>
286 <li><a href="../docs/java/urlfetch/overview.html">Overview</a></li>
287 <li><a href="../docs/java/urlfetch/usingjavanet.html">Using java.net</a></li>
288 <li><a href="../docs/java/javadoc/com/google/appengine/api/urlfetch/package-summary.html">Low-level API</a></li>
290 </ul>
291 </li>
292 <li><a href="../docs/java/users/index.html">Users</a>
293 <ul>
294 <li><a href="../docs/java/users/overview.html">Overview</a></li>
295 <li><a href="../docs/java/javadoc/com/google/appengine/api/users/package-summary.html">API Reference</a></li>
297 </ul>
298 </li>
299 <li><a href="../docs/java/xmpp/index.html">XMPP</a>
300 <ul>
301 <li><a href="../docs/java/xmpp/overview.html">Overview</a></li>
302 <li><a href="../docs/java/javadoc/com/google/appengine/api/xmpp/package-summary.html">API Reference</a></li>
304 </ul>
305 </li>
306 </ul>
307 </li>
308 <li><a href="../docs/java/javadoc/index.html">Services Javadoc</a></li>
309 <li><a href="../docs/java/jrewhitelist.html">JRE Class White List</a></li>
310 <li><a href="../docs/java/config/index.html">Configuration</a>
311 <ul>
312 <li><a href="../docs/java/config/webxml.html">Deployment Descriptor</a></li>
313 <li><a href="../docs/java/config/appconfig.html">App Config</a></li>
314 <li><a href="../docs/java/config/indexconfig.html">Index Config</a></li>
315 <li><a href="../docs/java/config/cron.html">Scheduled Tasks</a></li>
316 <li><a href="../docs/java/config/queue.html">Task Queue Config</a></li>
317 <li><a href="../docs/java/config/dos.html">DoS Protection Config</a></li>
319 </ul>
320 </li>
321 <li><a href="../docs/java/configyaml/index.html">YAML Configuration</a>
322 <ul>
323 <li><a href="../docs/java/configyaml/appconfig_yaml.html">YAML App Config</a></li>
324 <li><a href="../docs/java/configyaml/indexconfig.html">Index Config</a></li>
325 <li><a href="../docs/java/configyaml/cron.html">Scheduled Tasks</a></li>
326 <li><a href="../docs/java/configyaml/queue.html">Task Queue Config</a></li>
327 <li><a href="../docs/java/configyaml/dos.html">DoS Protection Config</a></li>
329 </ul>
330 </li>
331 <li><a href="../docs/java/tools/index.html">Tools</a>
332 <ul>
333 <li><a href="../docs/java/tools/devserver.html">Development Server</a></li>
334 <li><a href="../docs/java/tools/uploadinganapp.html">Uploading and Managing</a></li>
335 <li><a href="../docs/java/tools/eclipse.html">Google Plugin for Eclipse</a></li>
336 <li><a href="../docs/java/tools/ant.html">Using Apache Ant</a></li>
337 <li><a href="../docs/java/tools/localunittesting.html">Local Unit Testing</a>
338 <ul>
339 <li><a href="../docs/java/tools/localunittesting/javadoc/index.html">Testing Javadoc</a></li>
340 </ul>
341 </li>
342 <li><a href="../docs/java/tools/appstats.html">Appstats</a></li>
344 </ul>
345 </li>
346 <li><a href="../docs/java/howto/index.html">How-To</a>
347 <ul>
348 <li><a href="../docs/java/howto/maintenance.html">Handling Scheduled Maintenance Periods</a></li>
350 </ul>
351 </li>
353 </ul>
354 </li>
355 </ul>
356 <div class="line"></div>
357 <ul>
358 <li><h2>Python</h2>
359 <ul>
360 <li><a href="../docs/python/overview.html">Overview</a></li>
361 <li><a href="../docs/python/runtime.html">CGI Environment</a></li>
362 <li><a href="../docs/python/datastore/index.html">Storing Data</a>
363 <ul>
364 <li><a href="../docs/python/datastore/overview.html">Overview</a></li>
365 <li><a href="../docs/python/datastore/entitiesandmodels.html">Entities and Models</a></li>
366 <li><a href="../docs/python/datastore/creatinggettinganddeletingdata.html">Creating, Getting and Deleting Data</a></li>
367 <li><a href="../docs/python/datastore/keysandentitygroups.html">Keys and Entity Groups</a></li>
368 <li><a href="../docs/python/datastore/queriesandindexes.html">Queries and Indexes</a></li>
369 <li><a href="../docs/python/datastore/transactions.html">Transactions</a></li>
370 <li><a href="../docs/python/datastore/typesandpropertyclasses.html">Types and Property Classes</a></li>
371 <li><a href="../docs/python/datastore/gqlreference.html">GQL Reference</a></li>
372 <li><a href="../docs/python/datastore/stats.html">Statistics</a></li>
374 <li><span class="tlw-title tlw-expanded">Reference</span>
375 <ul>
376 <li><a href="../docs/python/datastore/modelclass.html">Model</a></li>
377 <li><a href="../docs/python/datastore/expandoclass.html">Expando</a></li>
378 <li><a href="../docs/python/datastore/polymodelclass.html">PolyModel</a></li>
379 <li><a href="../docs/python/datastore/propertyclass.html">Property</a></li>
380 <li><a href="../docs/python/datastore/queryclass.html">Query</a></li>
381 <li><a href="../docs/python/datastore/gqlqueryclass.html">GqlQuery</a></li>
382 <li><a href="../docs/python/datastore/keyclass.html">Key</a></li>
383 <li><a href="../docs/python/datastore/functions.html">Functions</a></li>
384 <li><a href="../docs/python/datastore/exceptions.html">Exceptions</a></li>
385 </ul>
386 </li>
388 </ul>
389 </li>
390 <li><a href="../docs/python/apis.html">Services</a>
391 <ul>
392 <li><a href="../docs/python/blobstore/index.html">Blobstore</a>
393 <ul>
394 <li><a href="../docs/python/blobstore/overview.html">Overview</a></li>
395 <li><span class="tlw-title tlw-expanded">Reference</span>
396 <ul>
397 <li><a href="../docs/python/blobstore/blobinfoclass.html">BlobInfo</a></li>
398 <li><a href="../docs/python/blobstore/blobkeyclass.html">BlobKey</a></li>
399 <li><a href="../docs/python/blobstore/blobreaderclass.html">BlobReader</a></li>
400 <li><a href="../docs/python/blobstore/functions.html">Functions</a></li>
401 <li><a href="../docs/python/blobstore/exceptions.html">Exceptions</a></li>
402 </ul>
403 </li>
405 </ul>
406 </li>
407 <li><a href="../docs/python/images/index.html">Images</a>
408 <ul>
409 <li><a href="../docs/python/images/overview.html">Overview</a></li>
410 <li><a href="../docs/python/images/installingPIL.html">Installing PIL</a></li>
411 <li><a href="../docs/python/images/usingimages.html">Using the Images API</a></li>
412 <li><span class="tlw-title tlw-expanded">Reference</span>
413 <ul>
414 <li><a href="../docs/python/images/imageclass.html">Image</a></li>
415 <li><a href="../docs/python/images/functions.html">Functions</a></li>
416 <li><a href="../docs/python/images/exceptions.html">Exceptions</a></li>
417 </ul>
418 </li>
420 </ul>
421 </li>
422 <li><a href="../docs/python/mail/index.html">Mail</a>
423 <ul>
424 <li><a href="../docs/python/mail/overview.html">Overview</a></li>
425 <li><a href="../docs/python/mail/sendingmail.html">Sending Mail</a></li>
426 <li><a href="../docs/python/mail/receivingmail.html">Receiving Mail</a></li>
427 <li><a href="../docs/python/mail/attachments.html">Attachments</a></li>
428 <li><span class="tlw-title tlw-expanded">Reference</span>
429 <ul>
430 <li><a href="../docs/python/mail/emailmessageclass.html">EmailMessage</a></li>
431 <li><a href="../docs/python/mail/emailmessagefields.html">Message Fields</a></li>
432 <li><a href="../docs/python/mail/functions.html">Functions</a></li>
433 <li><a href="../docs/python/mail/exceptions.html">Exceptions</a></li>
434 </ul>
435 </li>
437 </ul>
438 </li>
439 <li><a href="../docs/python/memcache/index.html">Memcache</a>
440 <ul>
441 <li><a href="../docs/python/memcache/overview.html">Overview</a></li>
442 <li><a href="../docs/python/memcache/usingmemcache.html">Using Memcache</a></li>
443 <li><span class="tlw-title tlw-expanded">Reference</span>
444 <ul>
445 <li><a href="../docs/python/memcache/clientclass.html">Client</a></li>
446 <li><a href="../docs/python/memcache/functions.html">Functions</a></li>
447 </ul>
448 </li>
450 </ul>
451 </li>
452 <li><a href="../docs/python/multitenancy/index.html">Multitenancy</a>
453 <ul>
454 <li><a href="../docs/python/multitenancy/overview.html">Overview</a></li>
455 <li><a href="../docs/python/multitenancy/multitenancy.html">Multitenancy with Namespaces</a></li>
456 <li><a href="../docs/python/multitenancy/namespaces.html">Other Uses for Namespaces</a></li>
457 <li>Reference
458 <ul>
459 <li><a href="../docs/python/multitenancy/functions.html">Functions</a></li>
460 <li><a href="../docs/python/multitenancy/exceptions.html">Exceptions</a></li>
461 </ul>
462 </li>
464 </ul>
465 </li>
466 <li><a href="../docs/python/oauth/index.html">OAuth</a>
467 <ul>
468 <li><a href="../docs/python/oauth/overview.html">Overview</a></li>
469 <li><span class="tlw-title tlw-expanded">Reference</span>
470 <ul>
471 <li><a href="../docs/python/oauth/functions.html">Functions</a></li>
472 <li><a href="../docs/python/oauth/exceptions.html">Exceptions</a></li>
473 </ul>
474 </li>
476 </ul>
477 </li>
478 <li><a href="../docs/python/taskqueue/index.html">Task Queues</a>
479 <ul>
480 <li><a href="../docs/python/taskqueue/overview.html">Overview</a></li>
481 <li><span class="tlw-title tlw-expanded">Reference</span>
482 <ul>
483 <li><a href="../docs/python/taskqueue/tasks.html">Task Class</a></li>
484 <li><a href="../docs/python/taskqueue/queues.html">Queue Class</a></li>
485 <li><a href="../docs/python/taskqueue/functions.html">Functions</a></li>
486 <li><a href="../docs/python/taskqueue/exceptions.html">Exceptions</a></li>
487 </ul>
488 </li>
490 </ul>
491 </li>
492 <li><a href="../docs/python/urlfetch/index.html">URL Fetch</a>
493 <ul>
494 <li><a href="../docs/python/urlfetch/overview.html">Overview</a></li>
495 <li><span class="tlw-title tlw-expanded">Reference</span>
496 <ul>
497 <li><a href="../docs/python/urlfetch/fetchfunction.html">The fetch Function</a></li>
498 <li><a href="../docs/python/urlfetch/asynchronousrequests.html">Asynchronous Requests</a></li>
499 <li><a href="../docs/python/urlfetch/responseobjects.html">Response Objects</a></li>
500 <li><a href="../docs/python/urlfetch/exceptions.html">Exceptions</a></li>
501 </ul>
502 </li>
504 </ul>
505 </li>
506 <li><a href="../docs/python/users/index.html">Users</a>
507 <ul>
508 <li><a href="../docs/python/users/overview.html">Overview</a></li>
509 <li><a href="../docs/python/users/userobjects.html">User Objects</a></li>
510 <li><a href="../docs/python/users/loginurls.html">Login URLs</a></li>
511 <li><a href="../docs/python/users/adminusers.html">Admin Users</a></li>
513 <li><span class="tlw-title tlw-expanded">Reference</span>
514 <ul>
515 <li><a href="../docs/python/users/userclass.html">User</a></li>
516 <li><a href="../docs/python/users/functions.html">Functions</a></li>
517 <li><a href="../docs/python/users/exceptions.html">Exceptions</a></li>
518 </ul>
519 </li>
521 </ul>
522 </li>
523 <li><a href="../docs/python/xmpp/index.html">XMPP</a>
524 <ul>
525 <li><a href="../docs/python/xmpp/overview.html">Overview</a></li>
526 <li><span class="tlw-title tlw-expanded">Reference</span>
527 <ul>
528 <li><a href="../docs/python/xmpp/functions.html">Functions</a></li>
529 <li><a href="../docs/python/xmpp/messageclass.html">Message</a></li>
530 <li><a href="../docs/python/xmpp/exceptions.html">Exceptions</a></li>
531 </ul>
532 </li>
534 </ul>
535 </li>
536 </ul>
537 </li>
538 <li><a href="../docs/python/config/index.html">Configuration</a>
539 <ul>
540 <li><a href="../docs/python/config/appconfig.html">App Config</a></li>
541 <li><a href="../docs/python/config/indexconfig.html">Index Config</a></li>
542 <li><a href="../docs/python/config/cron.html">Scheduled Tasks</a></li>
543 <li><a href="../docs/python/config/queue.html">Task Queue Config</a></li>
544 <li><a href="../docs/python/config/dos.html">DoS Protection Config</a></li>
546 </ul>
547 </li>
548 <li><a href="../docs/python/tools/index.html">Tools</a>
549 <ul>
550 <li><a href="../docs/python/tools/devserver.html">Development Server</a></li>
551 <li><a href="../docs/python/tools/uploadinganapp.html">Uploading and Managing</a></li>
552 <li><a href="../docs/python/tools/uploadingdata.html">Uploading and Downloading Data</a></li>
553 <li><a href="../docs/python/tools/webapp/index.html">webapp Framework</a>
554 <ul>
555 <li><a href="../docs/python/tools/webapp/overview.html">Overview</a></li>
556 <li><a href="../docs/python/tools/webapp/running.html">Running the Application</a></li>
557 <li><a href="../docs/python/tools/webapp/requesthandlers.html">Request Handlers</a></li>
558 <li><a href="../docs/python/tools/webapp/requestdata.html">Request Data</a></li>
559 <li><a href="../docs/python/tools/webapp/buildingtheresponse.html">Building the Response</a></li>
560 <li><a href="../docs/python/tools/webapp/redirects.html">Redirects, Headers and Status Codes</a></li>
561 <li><a href="../docs/python/tools/webapp/blobstorehandlers.html">Blobstore Handlers</a></li>
563 <li><span class="tlw-title tlw-expanded">Reference</span>
564 <ul>
565 <li><a href="../docs/python/tools/webapp/requestclass.html">Request</a></li>
566 <li><a href="../docs/python/tools/webapp/responseclass.html">Response</a></li>
567 <li><a href="../docs/python/tools/webapp/requesthandlerclass.html">RequestHandler</a></li>
568 <li><a href="../docs/python/tools/webapp/wsgiapplicationclass.html">WSGIApplication</a></li>
569 <li><a href="../docs/python/tools/webapp/utilmodule.html">Utility Functions</a></li>
571 </ul>
572 </li>
574 </ul>
575 </li>
576 <li><a href="../docs/python/tools/appstats.html">Appstats</a></li>
577 <li><a href="../docs/python/tools/libraries.html">Third-party Libraries</a></li>
579 </ul>
580 </li>
581 <li><a href="../docs/python/howto/index.html">How-To</a>
582 <ul>
583 <li><a href="../docs/python/howto/usinggdataservices.html">Google Data Services</a></li>
584 <li><a href="../docs/python/howto/maintenance.html">Handling Scheduled Maintenance Periods</a></li>
586 </ul>
587 </li>
589 </ul>
590 </li>
591 </ul>
592 <div class="line"></div>
593 <ul>
594 <li><h2>Managing Your App</h2>
595 <ul>
596 <li><a href="../docs/theadminconsole.html">The Admin Console</a></li>
597 <li><a href="../docs/quotas.html">Quotas</a></li>
598 <li><a href="../docs/billing.html">Billing</a></li>
599 <li><a href="../docs/domain.html">Using a Custom Domain</a></li>
600 </ul>
601 </li>
602 </ul>
603 <div class="line"></div>
604 <ul>
605 <li><h2>Resources</h2>
606 <ul>
607 <li><a href="index.html">FAQ</a></li>
608 <li><a href="../articles/index.html">Articles</a></li>
609 <li><a href="http://appengine-cookbook.appspot.com/">Cookbook</a></li>
610 <li><a href="http://appgallery.appspot.com/">App Gallery</a></li>
611 <li><a href="http://code.google.com/p/googleappengine/">SDK Code</a></li>
612 <li><a href="http://code.google.com/p/datanucleus-appengine/">JDO/JPA Code</a></li>
613 <li><a href="http://code.google.com/p/google-app-engine-samples/">Sample Apps Code</a></li>
614 <li>Launcher Code
615 <ul>
616 <li><a href="http://code.google.com/p/google-appengine-mac-launcher/">Mac</a></li>
617 <li><a href="http://code.google.com/p/google-appengine-wx-launcher/">Windows/wx</a></li>
618 </ul>
619 </li>
620 <li><a href="../community.html">Discussion Groups</a></li>
621 </ul>
622 </li>
623 </ul>
624 <div class="line"></div>
625 <ul>
626 <li><a href="../docs/roadmap.html">Product Roadmap</a></li>
627 <li><a href="http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes">Release Notes: Python</a></li>
628 <li><a href="http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes">Release Notes: Java</a></li>
629 <li><a href="../docs/revision_history.html">Revision History</a></li>
630 </ul>
632 <a class="hidden" href="#gc-topnav-anchor">More Google App Engine resource links</a>
633 </div>
635 <a name="gc-pagecontent-anchor"></a>
636 <div class="g-unit" id="gc-pagecontent">
637 <script type="text/javascript">CODESITE_docEarlyProcessing();</script>
638 <h1 class="page_title">Google App Engine General Questions</h1>
642 <style type="text/css">
643 .content-container .snippet-header {
644 color: gray;
645 display: block;
646 font-weight: bold;
647 margin-bottom: 15px;
649 </style>
651 <div id="jd-content">
652 <div class="jd-descr">
654 <ul>
655 <li><a href="#signin">How do I sign into my Google App Engine account?</a></li>
656 <li><a href="#language">What languages are supported by Google App Engine?</a></li>
657 <li><a href="#frameworks">What frameworks does Google App Engine Support?</a></li>
658 <li><a href="#dev">Can I still develop a Google App Engine app if I don't have an account?</a></li>
659 <li><a href="#create">How many applications can I create with Google App Engine?</a></li>
660 <li><a href="#disable">How can I disable one of my existing applications?</a></li>
661 <li><a href="#content">What type of content is allowed on Google App Engine?</a></li>
662 <li><a href="#charts">How do I read the system usage charts in the admin console for my app?</a></li>
663 <li><a href="#currentload">How is the current load report in my application's admin console generated?</a></li>
664 <li><a href="#erroruris">How do you generate the list of URIs showing the most errors in my application's admin console?</a></li>
665 <li><a href="#gql">What is GQL?</a></li>
666 <li><a href="#indexes">Why do my queries need to be covered by indexes, and how do I include them?</a></li>
667 <li><a href="#error_indexes">Why were my indexes marked as <i>Error</i>?</a></li>
668 <li><a href="#stuck_indexes">Why do my indexes stay <i>Building</i> or <i>Deleting</i> for long periods of time?</a></li>
669 <li><a href="#auth">How do I authenticate users of my application?</a></li>
670 <li><a href="#libraries">Are there any Python libraries not supported by Google App Engine?</a></li>
671 <li><a href="#disabled">Why did my app get disabled?</a></li>
672 <li><a href="#quota">Why is my app over quota?</a></li>
673 <li><a href="#violation">How do I report an application that is in violation of your Terms and Conditions?</a></li>
674 <li><a href="#sdk">Should I use the SDK for serving external requests?</a></li>
675 <li><a href="#compression">How do I serve compressed content?</a></li>
676 <li><a href="#https">Does Google App Engine support SSL (HTTPS)?</a></li>
677 <li><a href="#httpsapps">Can I use SSL (HTTPS) on App Engine with my Google Apps domain?</a></li>
678 <li><a href="#rpcssl">Do tools like appcfg use SSL (HTTPS)?</a></li>
679 <li><a href="#naked_domain">I'd like to map my app to http://myurl.com (also known as a naked domain).</a></li>
680 <li><a href="#cron">How do I define cron jobs for my application?</a></li>
681 <li><a href="#taskqueue">What are task queues?</a></li>
682 <li><a href="#activerequests">How many active requests can my app serve at one time?</a></li>
683 <li><a href="#blacklists">How do I prevent users/subnets from accessing my app?</a></li>
684 </ul>
686 <a name="signin" id="signin"></a><h2>How do I sign into my Google App Engine account?</h2>
687 <p>For normal Google Accounts, including Gmail users, you can log into your App Engine account by visiting:</p>
688 <ul>
689 <li><a href="https://appengine.google.com">https://appengine.google.com/</a></li>
690 </ul>
691 <p>For users with accounts through Google Apps:</p>
692 <ul>
693 <li>https://appengine.google.com/a/&lt;DOMAIN.COM&gt;</li>
694 <p>Where &lt;DOMAIN.COM&gt; is the domain that your account is associated with.</p>
695 </ul>
698 <a name="language" id="language"></a><h2>What languages are supported by Google App Engine?</h2>
699 <p>Currently, Google App Engine supports two application environments: <a href="../docs/java/overview.html">Java</a> and <a href="../docs/python/overview.html">Python</a>. Additionally, your website templates can include JavaScript along with your HTML which, among other things, allows you to write AJAX-enabled web applications.</p>
700 <h4>Java</h4>
701 <p>App Engine applications can also be written in Java or any JVM-compatible language (e.g. JRuby, Groovy, Scala, etc.) and run in a Java 6 runtime environment. The same sandbox restrictions noted above apply to Java applications and are summarized in the <a href="../docs/java/runtime.html#The_Sandbox">documentation</a>. Also, Java-based applications may only use the JRE classes in the <a href="../docs/java/jrewhitelist.html">JRE class white list</a>.</p>
702 <h4>Python</h4>
703 <p>App Engine's Python runtime supports Python 2.5 &ndash; newer versions of Python, including Python 2.6, are not currently supported. For security reasons, some Python modules written in C won't run in App Engine's sandbox. Because App Engine doesn't support writing to disk or opening direct network connections, other libraries that rely on this may not be fully usable. The <a href="../docs/python/runtime.html#Pure_Python">documentation</a> provides a good overview of the Python runtime environment. A full list of Python libraries that are disabled or partially disabled is available <a href="#libraries">here</a>.</p>
705 <a name="frameworks" id="frameworks"></a><h2>What frameworks does Google App Engine Support?</h2>
706 <h4>Java</h4>
707 <p>App Engine's Java runtime works with many popular Java frameworks including Struts 2 and Spring MVC. App Engine also supports several popular JVM-compatible languages such as JRuby and Scala. All frameworks must operate inside the restrictions of App Engine's <a href="../docs/java/runtime.html#The_Sandbox">sandbox</a> and only use the JRE classes in the <a href="../docs/java/jrewhitelist.html">JRE class white list.</a> A list of App Engine-compatible Java libraries and frameworks is available <a href="http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine">here</a>.</p>
708 <h4>Python</h4>
709 <p>App Engine can run most Python web frameworks out-of-the box with few or no modifications. For your convenience, Django 0.96 is included with the Google App Engine SDK and Django versions 1.0.2 and 1.1 are available in the runtime when running on App Engine. More information is available in the documentation on <a href="../docs/python/tools/libraries.html">third-party libraries</a>.</p>
711 <a name="dev" id="dev"></a><h2>Can I still develop a Google App Engine app if I don't have an account?</h2>
712 <p>Absolutely! Even if you don't yet have a Google App Engine account you can always <a href="../downloads.html">download our SDK</a> and start developing.</p>
714 <a name="create" id="create"></a><h2>How many applications can I create with Google App Engine?</h2>
715 <p>Each developer can create 10 applications with their Google App Engine administrator account. You can <a href="adminconsole.html#delete_app">delete</a> your existing applications via the Admin Console if you want to create more, but you will not be able to re-register an application ID.</p>
717 <a name="disable" id="disable"></a><h2>How can I disable one of my existing applications?</h2>
718 <p>You can disable, and subsequently re-enable, your application in the "Application Settings" page in the Admin Console. You can also permenantly delete your application. For more information see the <a href="adminconsole.html#delete_app">Admin Console FAQ</a>.
720 <a name="content" id="content"></a><h2>What type of content is allowed on Google App Engine?</h2>
721 <p>Please see our <a href="../terms.html">Terms of Service</a> if you have questions on what kind of content is allowed with Google App Engine.</p>
723 <a name="charts" id="charts"></a><h2>How do I read the system usage charts in the admin console for my app?</h2>
724 <p>Your Google App Engine dashboard in the Admin Console has six graphs that give you a quick visual reference of your system usage. The information displayed in these graphs gives you a 24-hour snapshot of resource consumption per second. Here are a list of the graphs you will see in the Admin Console:</p>
725 <ul>
726 <li><i>Requests/Second</i>: The number of URIs requested from your application every second</li>
727 <li><i>Milliseconds/Request</i>: The average number of milliseconds your application takes to service a request (latency measure)</li>
728 <li><i>Errors/Second</i>: The number of errors generated by your application every second</li>
729 <li><i>Bytes Received/Second</i>: The number of bytes that are received in a request every second</li>
730 <li><i>Bytes Sent/Second</i>: The number of bytes sent in a request every second</li>
731 <li><i>CPU Seconds Used/Second</i>: The amount of CPU megacyles your application uses every second</li>
732 <li><i>Milliseconds Used/Second</i>: The number of milliseconds per second your app is handling a request</li>
733 <li><i>Number of Quota DenialsSecond</i>: The number of times a request to your application was denied due to esceeding quotas; see <a href="../docs/quotas.html">Quotas</a> for a complete overview</li>
734 </ul>
736 <a name="currentload" id="currentload"></a><h2>How is the current load report in my application's admin console generated?</h2>
737 <p>The current load gives a breakdown of the number of requests for each URI requested from your application as well as some CPU stats for the URI. The request parameters are omitted from the path.</p>
738 <p>The leftmost column lists the URI path, starting with the most popular URI by total requests, which is listed under the "Requests" column. The number of requests is reset every Midnight PST. The "Req/Sec" column lists the short-term request rate of each URI.</p>
739 <p>The current load table provides two data points for CPU usage, "Avg CPU (API)" and "% CPU". The "Avg CPU (API)" displays the average amount of CPU a request to that URI has consumed over the past hour, measured in megacycles. The "% CPU" column shows the percentage of CPU that URI has consumed since midnight PST with respect to the other URIs in your application.</p>
741 <a name="erroruris" id="erroruris"></a><h2>How do you generate the list of URIs showing the most errors in my application's admin console?</h2>
742 <p>If any error occurs when attempting to load a URI, our system records that error. We then show the URIs that record the most errors in the past 24 hrs in the admin console. In addition to showing the total number of errors, we include the percentage of errors as the ratio of errors at the URI to total requests of that URI.</p>
743 <p>Applications who have not included a favicon.ico file may notice the URI <code>/favicon.ico</code> on the list of errorful URIs. Favicon.ico is a file that is requested by a user's web browser when it attempts to load the page. Favicon.ico is your website's icon, and is typically displayed in the user's browser URL bar, next to the web address of your site.</p>
744 <p>For your application, favicon.ico should be a static image. You can upload a favicon.ico file with your application, and in your app.yaml file configure your application to serve the image when the url /favicon.ico is requested. Below are example entries in <code>appengine-web.xml</code> (Java) and <code>app.yaml</code> (Python). In the Python example, <code>favicon.ico</code> is located in <code>static/images</code>. For simplicity, the same file is located in the root (<code>war</code>) directory in the Java example.</p>
745 <div class="tabpane">
746 <ul>
747 <li><a href="#favicon_java"><span>Java</span></a></li>
748 <li><a href="#favicon_python"><span>Python</span></a></li>
749 </ul>
750 <div class="content-container">
751 <div id="favicon_java">
752 <span class="snippet-header"><b>appengine-web.xml</b></span>
753 <pre>
754 &lt;static-files&gt;
755 &lt;include path="/favicon.ico" /&gt;
756 &lt;/static-files&gt;
757 </pre>
758 </div>
759 <div id="favicon_python">
760 <span class="snippet-header">app.yaml</span>
761 <pre>
762 - url: /favicon.ico
763 static_files: static/images/favicon.ico
764 upload: static/images/favicon.ico
765 </pre>
766 </div>
767 </div>
768 </div>
770 <a name="gql" id="gql"></a><h2>What is GQL?</h2>
771 <p>GQL is a query language that is used with the App Engine datastore. You can use it to query for entities in both the Python runtime environment as well as the datastore viewer in the Admin Console. It uses a SQL-like syntax to retrieve entire entities from your application's datastore and includes the ability to filter on properties, specify the sorting order of the results, and limit the number of entities returned. The full GQL language reference can be found <a href="../docs/python/datastore/gqlreference.html">here</a>.</p>
773 <a id="indexes" name="indexes"></a><h2>Why do my queries need to be covered by indexes, and how do I include them?</h2>
774 <p>If you run a query that filters on multiple entity properties or orders results by multiple properties, you will need an index for that query. You must have an index for every query of that kind that you run with your application. The datastore index for a query maintains and updates a list of keys sorted in the manner that the query specifies to allow speedy access to the data in your datastore. A full explanation of datastore indexes can be found in our documentation (<a href="../docs/java/datastore/queriesandindexes.html#Introducing_Indexes">Java</a> | <a href="../docs/python/datastore/queriesandindexes.html#Introducing_Indexes">Python</a>).</p>
775 <p>When you develop your application with Google App Engine SDK, every query you run automatically gets indexed when necessary. If you thoroughly test your application before uploading it to your website, all of the indexes your application will need will be included in your application's <code>datastore-indexes.xml</code> (Java) or <code>index.yaml</code> (Python) files. You may manually add indexes if you find a query that was not covered by your development testing. For more information on how to write indexes for your application, see the index documentation (<a href="../docs/java/datastore/queriesandindexes.html#Defining_Indexes_With_Configuration">Java</a> | <a href="../docs/python/datastore/queriesandindexes.html#Defining_Indexes_With_Configuration">Python</a>).</p>
777 <a id="error_indexes" name="error_indexes"></a><h2>Why were my indexes marked as <i>Error</i>?</h2>
778 <p>They may be
779 <a href="../docs/python/datastore/queriesandindexes.html#Big_Entities_and_Exploding_Indexes">exploding indexes</a>, or may have encountered other similar problems when writing particular entities in your datastore. You can vacuum and re-attempt to build them by following the instructions in <a href="../docs/python/datastore/queriesandindexes.html#Big_Entities_and_Exploding_Indexes">Queries and Indexes</a>.</p>
781 <a id="stuck_indexes" name="stuck_indexes"></a><h2>Why do my indexes stay <i>Building</i> or <i>Deleting</i> for long periods of time?</h2>
782 <p>Even if you don't have many entities of the corresponding <a href="../docs/python/datastore/keysandentitygroups.html#Kinds_Names_and_IDs">kind</a>(s), the time indexes take to build or delete can vary widely depending on the total amount of data in your datastore, indexes currently building for other apps, and datastore load due to user requests, among other factors. In some cases, index jobs can take hours or even days to complete.</p>
783 <p>Even so, we can sometimes help with indexes that seem to be stuck. If you think this has happened to your indexes, feel free to ask us on the <a href="http://groups.google.com/group/google-appengine">group</a>.
784 <p>In the past, index jobs sometimes slowed down because worker <a href="../articles/index_building.html#Doing Work in Parallel">shards</a> were too large to be completed within the lease period. We initially addressed this by increasing the lease period. Later, we started <a href="../articles/index_building.html#Splitting Within Tablets">splitting individual tablets into shards</a>.</p>
786 <a name="auth" id="auth"></a><h2>How do I authenticate users of my application?</h2>
787 <p>The Users service (<a href="../docs/java/users/index.html">Java</a> | <a href="../docs/python/users/index.html">Python</a>) allows you to authenticate users who have a Google Accounts, user account on your own <a href="http://www.google.com/a/">Google Apps</a> domain, or an OpenID. You choose one of these forms of authentication for your app. Please read our <a href="../articles/domains.html">article on how to configure your application to authenticate against a Google Apps domain.</a></p>
789 <p>If your app uses Google Accounts, when your application requests a user sign in, the user is directed to a Google sign-in page to enter a username and password, or to create a new account. If your app uses OpenID and requests a sign-in, the user is directed to <code>/_ah/login_required</code> to provide an OpenID and password. After successfully signing in, the user is then returned to your website, and the user information is available to your application through the Users property.</p>
791 <a name="libraries" id="libraries"></a><h2>Are there any third-party libraries not supported by Google App Engine?</h2>
792 <h4>Java</h4>
793 <p>For a list of compatible and incompatible libraries and frameworks, please see <a href="http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine">Will it Play in App Engine</a>.
794 <h4>Python</h4>
795 <p>A small percentage of native C python modules, and subsets of native C python modules are not available with Google App Engine. A full list detailing native C Python module support can be found <a href="libraries.html">here</a>. The disabled modules fall in to the following categories:</p>
796 <ul>
797 <li>Libraries that maintain databases on disk are not enabled in Python for Google App Engine</li>
798 <li>Sockets are disabled with Google App Engine</li>
799 <li>The system does not allow you to invoke subprocesses, as a result some os module methods are disabled</li>
800 <li>Threading is not available</li>
801 <li>For security reasons, most C-based modules are disabled</li>
802 <li>Other features that are limited:
803 <ul>
804 <li>marshal is disabled</li>
805 <li>cPickle is aliased to pickle</li>
806 <li>System calls have been disabled</li>
807 </ul></li>
808 </ul>
809 <p>Please keep in mind that third party packages which use any of the above features will not function with Google App Engine (packages such as MySQL, PostgreSQL, etc).</p>
811 <a id="disabled" name="disabled"></a><h2>Why did my app get disabled?</h2>
812 <p>An app may be disabled if it fails to abide by our <a href="../terms.html">Terms and Conditions</a>. Additionally, if an application is found to be using an inordinate amount of system resources due to a bug or other issue leading to inefficient resource usage, we may disable the app so that the developer can fix the development issues using our development SDK before re-enabling the application on Google App Engine.</p>
813 <a id="quota" name="quota"></a><h2>Why is my app over quota?</h2>
814 <p>App Engine places quota limits on the amount of each system resource that an application can consume in a day. All applications have a default quota configuration, the &quot;free quotas&quot;, which should allow for roughly 5 million pageviews a month for an efficient application. You can read more about system quotas in the <a href="../docs/quotas.html">quota documentation</a>.</p>
815 <p>As your application grows, it may need a higher resource allocation than the default quota configuration provides. You can purchase additional computing resources by enabling <a href="../docs/billing.html">billing</a> for your application. Billing enables developers to raise the limits on all system resources and pay for even higher limits on <a href="billing.html#resources">CPU, bandwidth, storage, and email usage</a>.</p>
817 <a id="violation" name="violation"></a><h2>How do I report an application that is in violation of your Terms and Conditions?</h2>
818 <p>To report an application that is in violation of the Google App Engine Terms and Condition, please <a href="http://code.google.com/support/bin/request.py?contact_type=AppEngineContact
819 ">contact us</a>. We will determine if the application is in violation, and if necessary, contact the application's developer over the violation.</p>
821 <a id="sdk" name="sdk"></a><h2>Should I use the SDK for serving external requests?</h2>
822 <p>The dev_appserver is designed for local testing and disallows external connections by default. You can override this using the -a &lt;hostname&gt; flag when running it, but doing so is not recommended because the SDK has not been hardened for security and may contain vulnerabilities.</p>
824 <a id="compression" name="compression"></a><h2>How do I serve compressed content?</h2>
825 <p>Google App Engine does its best to serve gzipped content to browsers
826 that support it. Taking advantage of this scheme is automatic and
827 requires no modifications to applications.</p>
828 <p>We use a combination of request headers (Accept-Encoding, User-Agent)
829 and response headers (Content-Type) to determine whether or not the
830 end-user can take advantage of gzipped content. This approach avoids
831 some well-known bugs with gzipped content in popular browsers. To
832 force gzipped content to be served, clients may supply 'gzip' as the
833 value of both the Accept-Encoding and User-Agent request headers. Content
834 will never be gzipped if no Accept-Encoding header is present.</p>
835 <p>This is covered further in the runtime environment documentation (<a href="../docs/java/runtime.html#Responses">Java</a> | <a href="../docs/python/runtime.html#Responses">Python</a>).</p>
837 <h2 id="https">Does Google App Engine support SSL (HTTPS)?</h2>
838 <p>Google App Engine allows you to serve SSL (HTTPS) traffic through your appspot.com domain. Simply add the 'secure' parameter to your app.yaml handler for the URLs through which you wish to support secure traffic. For complete information on how to configure your application for secure traffic, please see the docs on app configuration (<a href="../docs/java/config/webxml.html#Secure_URLs">Java</a> | <a href="../docs/python/config/appconfig.html#Secure_URLs">Python</a>).</p>
840 <h2 id="httpsapps">Can I use SSL (HTTPS) on App Engine with my Google Apps domain?</h2>
841 <p>All secure traffic with Google App Engine must be served from your appspot.com domain (https://your-app-id.appspot.com). If you are serving your app off of a Google Apps domain, you must direct all secure traffic through your app's appspot domain.</p>
843 <h2 id="rpcssl">Do tools like appcfg use SSL (HTTPS)?</h2>
844 <p>The SDK tools which use login (appcfg, remote_api, appengine_rpc) all use SSL when communicating your email address and password. In addition, appcfg uses SSL when connecting to the Admin Console by default, unless the <code>--insecure</code> flag is passed.</p>
845 <p>The Python SDK has the ability to validate the SSL certificate over the remote connection as of version 1.3.1. To do this you must have the <code>ssl</code> Python module installed on your system. If you are using Python 2.5, you can install the module from <a href="http://pypi.python.org/pypi/ssl/">http://pypi.python.org/pypi/ssl/</a>. If there is an error validating the SSL certificate, the Python tools will raise an <code>InvalidCertificateException</code> explaining what went wrong.</p>
846 <p>As of the 1.3.1 release, the Java SDK also enables SSL by default. If an error is encountered while validating the SSL certificate it will throw a <code>javax.net.ssl.SSLHandshakeException</code>.</p>
848 <a name="naked_domain" id="naked_domain"></a><h2>I'd like to map my app to http://myurl.com (also known as a naked domain).</h2>
849 <p>Due to recent changes, App Engine no longer supports mapping your app to a naked domain. If your domain registrar supports URL redirects, you can redirect from http://yourdomain.com to e.g http://www.yourdomain.com or http://appid.yourdomain.com.</p>
850 <p>For instructions on how to configure a redirect for your Google Apps domain, please see the <a href="http://www.google.com/support/a/bin/answer.py?hl=en-in&answer=61057">Google Apps FAQ on URL forwarding (redirection)</a>.</p>
852 <a name="cron" id="cron"></a><h2>How do I define cron jobs for my application?</h2>
853 <p>Please consult the language specific documentation for information on defining cron jobs for your application (<a href="../docs/java/config/cron.html">Java</a> | <a href="../docs/python/config/cron.html">Python</a>).</p>
855 <a name="taskqueue" id="taskqueue"></a><h2>What are task queues?</h2>
856 <p>Task queues provide a mechanism for dynamically adding new requests to be fulfilled at a later point in time. If an app needs to execute some background work, it can use the Task Queue API to organize that work into small, discrete units called <i>Tasks</i>. Tasks are inserted into one or more <i>Queues</i>. App Engine automatically detects new Tasks and executes them when system resources permit. For more details, see the documentation for the Task Queue API (<a href="../docs/java/taskqueue/index.html">Java</a> | <a href="../docs/python/taskqueue/index.html">Python</a>).</p>
858 <a name="activerequests" id="activerequests"></a><h2>How many active requests can my app serve at one time?</h2>
860 <p>Google App Engine allocates resources to your application automatically as traffic increases to support many simultaneous requests. However, App Engine reserves automatic scaling capacity for applications with low latency, where the application responds to requests in less than one second. Applications with very high latency (over one second per request for many requests) are limited by the system, and require a special exemption in order to have a large number of simultaneous dynamic requests. If your application has a strong need for a high throughput of long-running requests, you can <a href="http://code.google.com/appengine/kb/billing.html#cpu">request an exemption</a> from the simultaneous dynamic request limit. The vast majority of applications do not require any exemption.</p>
862 <p>Applications that are heavily CPU-bound may also incur some additional latency in order to efficiently share resources with other applications on the same servers. Requests for static files are exempt from these latency limits.</p>
865 <a name="blacklists" id="blacklists"></a><h2>How do I prevent users/subnets from accessing my app?</h2>
866 <p>App Engine provides a DoS Protection Service that enables you to blacklist IP addresses or subnets. For more details, see the documentation for the DoS Protection Service (<a href="../docs/java/config/dos.html">Java</a> | <a href="../docs/python/config/dos.html">Python</a>).</p>
868 </div>
869 </div>
872 </div><!-- end gc-pagecontent -->
873 </div><!-- end gooey wrapper -->
875 </div> <!-- end codesite content -->
878 <div id="gc-footer" dir="ltr">
879 <div class="text">
881 <div class="notice"><div id="notice" style="text-align: center; border: 1em 0em 1em 0em">
882 Except as otherwise <a
883 href="http://code.google.com/policies.html#restrictions">noted</a>,
884 the content of this page is licensed under the <a rel="license"
885 href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
886 Attribution 3.0 License</a>, and code samples are licensed under the
887 <a rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">Apache
888 2.0 License</a>.
889 <!-- <rdf:RDF xmlns="http://web.resource.org/cc/"
890 xmlns:dc="http://purl.org/dc/elements/1.1/"
891 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
892 <Work rdf:about="">
893 <license rdf:resource="http://creativecommons.org/licenses/by/3.0/" />
894 </Work>
895 <License rdf:about="http://creativecommons.org/licenses/by/3.0/">
896 <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
897 <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
898 <requires rdf:resource="http://web.resource.org/cc/Notice"/>
899 <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
900 <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
901 </License>
902 </rdf:RDF> -->
903 </div>
904 Java is a registered trademark of Sun Microsystems, Inc.</div>
906 &copy;2010 Google -
907 <a href="http://code.google.com">Code Home</a> -
908 <a href="http://code.google.com/terms.html">Terms of Service</a> -
909 <a href="http://code.google.com/privacy.html">Privacy Policy</a> -
910 <a href="http://code.google.com/more">Site Directory</a>
911 <br> <br>
912 Google Code offered in:
913 <a href="http://code.google.com/intl/en">English</a> -
914 <a href="http://code.google.com/intl/es">Español</a> -
915 <a href="http://code.google.com/intl/ja">日本語</a> -
916 <a href="http://code.google.com/intl/ko">한국어</a> -
917 <a href="http://code.google.com/intl/pt-BR">Português</a> -
918 <a href="http://code.google.com/intl/ru">Pусский</a> -
919 <a href="http://code.google.com/intl/zh-CN">中文(简体)</a> -
920 <a href="http://code.google.com/intl/zh-TW">中文(繁體)</a>
921 </div>
922 </div><!-- end gc-footer -->
924 </div><!-- end gc-container -->
926 <script type="text/javascript">CODESITE_CSITimer['load'].tick('ats');</script>
927 <script src="../../js/codesite_tail.pack.04102009.js" type="text/javascript"></script>
932 <script type="text/javascript">
933 var _gaq = _gaq || [];
935 _gaq.push(
938 ['siteTracker._setAccount', 'UA-18071-1'],
939 ['siteTracker._setDomainName', 'code.google.com'],
940 ['siteTracker._setCookiePath', window.location.pathname.substring(0,
941 window.location.pathname.lastIndexOf('/') + 1)],
942 ['siteTracker._trackPageview']
944 (function() {
945 var ga = document.createElement('script');
947 ga.type = 'text/javascript';
948 ga.async = true;
949 ga.src = 'http://www.google-analytics.com/ga.js';
950 (document.getElementsByTagName('head')[0] ||
951 document.getElementsByTagName('body')[0]).appendChild(ga);
952 })();
953 </script>
958 </body>
959 </html>