1626 Commits

Author SHA1 Message Date
Randall Leeds
eb17b13b1d Guard against race condition on threads keepalive
Requests after the first on a keepalive connection remove themselves
from the keepalive timeout queue. This presents a race condition where
the main thread might try to access the first element of the queue
after it has been removed.
2014-05-31 13:30:42 -07:00
benoitc
b7cbb59bbc remove useless code 2014-05-31 07:18:39 +02:00
benoitc
b810a1d1a9 fix doc 2014-05-31 07:13:36 +02:00
benoitc
d775b576e8 improve worker shutdown 2014-05-31 01:21:05 +02:00
benoitc
fb53047b73 fix timeout and socket ssl wrapping 2014-05-31 01:15:05 +02:00
benoitc
e8e9d285a6 fixes 2014-05-31 00:44:20 +02:00
benoitc
5ba749e9ca some quick optimisations 2014-05-31 00:17:29 +02:00
benoitc
c8e93a6f21 make the code simpler and fix issue with ab 2014-05-30 23:26:30 +02:00
benoitc
f8b415496d refactor the gthread worker for a better usage of asyncio
we have the possibility to pass a data payload to the poller when
registering a file object. We are using this possibility to pass a
callback. the callback will either accept or handle a connection when
the read event is triggered.

while I am here make the future result asynchronous so we don't block
the I/O event handling.
2014-05-30 15:59:47 +02:00
benoitc
7f9d745eb5 reuse asyncio code in the threaded worker 2014-05-30 11:07:35 +02:00
benoitc
81810d9f04 reuse the code 2014-05-15 08:03:06 +02:00
benoitc
14f71ebf39 compatibility with python 2
Add support of the threaded worker on python 2.7. python 2.7 has no
futures module. With this change the compatibility module is installed.
2014-05-13 15:18:43 +02:00
benoitc
67800292e0 fix kqueue poller.
this change initialise the event loop after the process has forked so we
make sure to inherit from the file descriptor.

Also fix the number of events we are waiting for. The python
implementation requires a positive number.
2014-05-13 13:57:34 +02:00
benoitc
eadc526192 fix PollPoller 2014-05-13 13:21:14 +02:00
benoitc
6aa99e4441 fix keepalive 2014-05-13 12:30:57 +02:00
benoitc
c353eaacee fix ThreadWorker 2014-05-13 10:29:26 +02:00
benoitc
c8f6269f29 fix the fdevents module 2014-05-13 10:27:49 +02:00
benoitc
67866f275f add missing gthreads worker 2014-05-13 10:21:48 +02:00
benoitc
5f0a329b58 add fdevents module
This module add a new cross platform event poller to gunicorn. It allows
you to listen on different fds in an efficient manner.

On linux it's using epoll, bsd/darwin kqueue...
2014-04-13 08:59:47 +02:00
benoitc
7349c4fb9a add --threads param 2014-03-30 15:27:53 +02:00
Randall Leeds
e42859492c Add Jeryn Mathew to thanks
Thanks, @jerynmathew
2014-03-17 17:00:38 -07:00
Randall Leeds
21ea843db4 Merge pull request #696 from jerynmathew/fix/693-config-pyc
Fix for #693
2014-03-17 16:59:37 -07:00
Jeryn Mathew
b6f3cb8e7c Fix for issue #693
- Added changes to file read, as per review comments
2014-03-17 10:26:53 +05:30
Jeryn Mathew
e1e5d3638f Fix for issue #693
- Remodeled the logic to use imp module to validate the python
	  gunicorn config file
2014-03-15 12:16:18 +05:30
benoitc
4c7b17e996 bump to R19 2014-03-09 07:30:43 -07:00
benoitc
1e8b375038 fix doc and make sure we get the --paste option 2014-03-09 07:28:46 -07:00
Randall Leeds
b35e368515 Remove references to deprecated console scripts 2014-03-08 18:21:36 -08:00
Randall Leeds
e5442332fe Support running specific paster apps from .ini
Close #400
2014-03-08 18:16:03 -08:00
benoitc
3ad5ee9120 fix title levels 2014-03-08 18:13:38 -08:00
benoitc
0d3b8ea379 There should only be one.
gunicron_paster, gunicorn_django and other hacks are deprecated. This
patch only advertise gunicorn as the standard, stable and well supported
command.
2014-03-08 18:09:39 -08:00
benoitc
0e4d9f0378 make sure we return the correct error with the last traceback.
fix #630
2014-03-08 18:01:30 -08:00
Randall Leeds
41e7aba3a9 bad variable reference in paste startup 2014-03-08 17:53:51 -08:00
benoitc
2edb2089ba update doc for django and paster integration
gunicorn_django and gunicorn_paster commands are now deprecated so
remove them from the doc. While I am here, update the integration doc.
2014-03-08 17:46:08 -08:00
benoitc
81241907ff switch QUIT and TERM signal
With this change, when gunicorn receives a QUIT all the workers are
killed immediately and exit and TERM is used for the graceful shutdown.

Note: the old behaviour was based on the NGINX but the new one is more
correct according the following doc:

https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

also it is complying with the way the signals are sent by heroku:

https://devcenter.heroku.com/articles/python-faq#what-constraints-exist-when-developing-applications-on-heroku
2014-03-08 17:14:06 -08:00
Randall Leeds
24a060ed02 Reap workers in SIGCHLD handler
This commit tries to minimize the chance of sending a kill signal
to a process that is not a gunicorn worker by reaping children
as soon as the SIGCHLD is received.

Close #371
2014-03-08 15:21:54 -08:00
Randall Leeds
12e5482a4a Merge pull request #711 from berkerpeksag/wheel-universal
Add universal Wheel support.
2014-03-04 17:03:32 -08:00
Berker Peksag
765b8ab48b Add universal Wheel support.
Gunicorn works on both Python 2 and Python 3, so we can create a
universal Wheel distribution.

See https://github.com/pypa/sampleproject/blob/master/setup.cfg for
more information.
2014-03-05 02:23:38 +02:00
Randall Leeds
4baaa08beb Merge pull request #710 from berkerpeksag/patch-1
Remove duplicate classifiers.
2014-03-01 15:52:27 -08:00
Berker Peksag
3783bc79f4 Remove duplicate classifiers. 2014-03-01 00:19:30 +02:00
Randall Leeds
a01a224e66 Merge pull request #697 from benoitc/issue/694
Issue/694
2014-02-23 12:26:03 -08:00
Benoit Chesneau
5ffa339fb5 Merge pull request #707 from qrilka/patch-1
gafferp renamed to gaffer
2014-02-22 14:31:00 +01:00
Kirill Zaborsky
9ce722e638 gafferp renamed to gaffer 2014-02-21 17:14:31 +03:00
Randall Leeds
88ccfdb981 Clean up some inconsistent in error handling
It is more DRY to let the exception here bubble.
2014-02-20 03:47:49 -08:00
Randall Leeds
6f1d3362c5 Merge pull request #686 from benoitc/web-concurrency
Honor $WEB_CONCURRENCY environment variable.
2014-02-20 02:17:00 -08:00
Randall Leeds
dc7dc14229 More logging.conf example typos 2014-02-20 02:00:23 -08:00
Randall Leeds
55afb41532 Merge pull request #703 from wking/701-consolidate-config-log
arbiter: Consolidate configuration logging
2014-02-14 15:34:49 -08:00
W. Trevor King
64f98a0a1c arbiter: Consolidate configuration logging
Benoit prefers the log prefix for the first line ("Current
configuration:") but not subsequent lines (" {config}: {value}") [1],
so consolidate to a single log.debug call.  The newer '{0}'.format()
syntax requires Python 2.6 [2], but our setup.py only claims
compatibility with 2.6, 2.7, 3.2, and 3.3, so that should be fine.

[1]: https://github.com/benoitc/gunicorn/pull/701/files#r9767234
[2]: http://docs.python.org/2/whatsnew/2.6.html#pep-3101-advanced-string-formatting
2014-02-14 15:15:35 -08:00
Randall Leeds
2b3f63601b Add documentation for WEB_CONCURRENCY 2014-02-14 15:12:21 -08:00
Randall Leeds
97977e41ab Merge pull request #701 from wking/700-debug-preload
Deprecate the --debug setting
2014-02-14 15:08:40 -08:00
Randall Leeds
2ee1c26ec8 Merge pull request #702 from berkerpeksag/use-email-utils-formatdate
Use email.utils.formatdate in gunicorn.util.http_date.
2014-02-14 14:43:14 -08:00