History log of /unit/src/python/nxt_python_asgi.c (Results 1 – 12 of 12)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 2068:e7eded7e5de9 09-Feb-2022 Max Romanov

Python: fixing debug message field type.

Introduced in the 78864c9d5ba8 commit.

Sorry about that.


# 2067:78864c9d5ba8 07-Feb-2022 Max Romanov

Python: fixing incorrect function object dereference.

The __call__ method can be native and not be a PyFunction type. A type check
is thus required before accessing op_code and other fields.

Repro

Python: fixing incorrect function object dereference.

The __call__ method can be native and not be a PyFunction type. A type check
is thus required before accessing op_code and other fields.

Reproduced on Ubuntu 21.04, Python 3.9.4 and Falcon framework: here, the
App.__call__ method is compiled with Cython, so accessing op_code->co_flags is
invalid; accidentally, the COROUTINE bit is set which forces the Python module
into the ASGI mode.

The workaround is explicit protocol specification.

Note: it is impossible to specify the legacy mode for ASGI.

show more ...


Revision tags: 1.26.1-1, 1.26.1, 1.26.0-1, 1.26.0
# 1980:43553aa72111 28-Oct-2021 Max Romanov

Moving request limit control to libunit.

Introducting application graceful stop. For now only used when application
process reach request limit value.

This closes #585 issue on GitHub.


# 1979:f62d52f65cf1 28-Oct-2021 Max Romanov

Python: creating and reusing asgi_add_reader() wrapper.


Revision tags: 1.25.0-1, 1.25.0
# 1918:b15674b9a39a 20-Jul-2021 Max Romanov

Python: using default event_loop for main thread for ASGI.

Unit's ASGI implementation creates a new event loop to run an application for
each thread since 542b5b8c0647. This may cause unexpected ex

Python: using default event_loop for main thread for ASGI.

Unit's ASGI implementation creates a new event loop to run an application for
each thread since 542b5b8c0647. This may cause unexpected exceptions or
strange bugs if asyncio synchronisation primitives are initialised before the
application starts (e.g. globally).

Although the approach with a new event loop for the main thread is consistent
and helps to prepare the application to run in multiple threads, it can be a
source of pain for people who just want to run single-threaded ASGI
applications in Unit.

This is related to #560 issue on GitHub.

show more ...


Revision tags: 1.24.0-1, 1.24.0
# 1872:9f8df8b810e0 20-May-2021 Oisin Canty

Python: support for multiple targets.


Revision tags: 1.23.0-1, 1.23.0, 1.22.0-1, 1.22.0
# 1767:582a004c73f8 29-Dec-2020 Max Romanov

Libunit: processing single port message.

This partially reverts the optimisation introduced in 1d84b9e4b459 to avoid an
unpredictable block in nxt_unit_process_port_msg(). Under high load, this
fun

Libunit: processing single port message.

This partially reverts the optimisation introduced in 1d84b9e4b459 to avoid an
unpredictable block in nxt_unit_process_port_msg(). Under high load, this
function may never return control to its caller, and the external event loop
(in Node.js and Python asyncio) won't be able to process other scheduled
events.

To reproduce the issue, two request processing types are needed: 'fast' and
'furious'. The 'fast' one simply returns a small response, while the 'furious'
schedules asynchronous calls to external resources. Thus, if Unit is subjected
to a large amount of 'fast' requests, the 'furious' request processing freezes
until the high load ends.

The issue was found by Wu Jian Ping (@wujjpp) during Node.js stream
implementation discussion and relates to PR #502 on GitHub.

show more ...


Revision tags: 1.21.0-1, 1.21.0
# 1715:95874fd97501 18-Nov-2020 Max Romanov

Libunit: closing active requests on quit.


# 1697:73a335d2911d 10-Nov-2020 Max Romanov

Python: supporting ASGI legacy protocol.

Introducing manual protocol selection for 'universal' apps and frameworks.


# 1682:2de7799a8749 04-Nov-2020 Max Romanov

Python: fixing some arguments reference counting.


# 1681:542b5b8c0647 04-Nov-2020 Max Romanov

Python: request processing in multiple threads.

This closes #459 issue on GitHub.


Revision tags: 1.20.0-1, 1.20.0
# 1624:e46b1b422545 01-Oct-2020 Max Romanov

Python: ASGI server introduced.

This closes #461 issue on GitHub.