mirror of
https://github.com/evennia/evennia.git
synced 2026-03-29 03:57:17 +02:00
This allows e.g. utils.utils.run_async to offload long-running functions to a completely different subprocess entirely, offering real parallelism. Implementation is still experimental, notably not all objects can be transferred safely across the wire; also there is no concept of updating caches yet - so adding an object from the subprocess side will not be known in the main thread yet (since caches cannot yet tell the underlying database has changed).
24 lines
1 KiB
Text
24 lines
1 KiB
Text
|
|
IDMAPPER
|
|
--------
|
|
|
|
https://github.com/dcramer/django-idmapper
|
|
|
|
IDmapper (actually Django-idmapper) implements a custom Django model
|
|
that is cached between database writes/read (SharedMemoryModel). It
|
|
not only lowers memory consumption but most importantly allows for
|
|
semi-persistance of properties on database model instances (something
|
|
not guaranteed for normal Django models).
|
|
|
|
Evennia makes a few modifications to the original IDmapper routines
|
|
(we try to limit our modifications in order to make it easy to update
|
|
it from upstream down the line).
|
|
|
|
- We change the caching from a WeakValueDictionary to a normal
|
|
dictionary. This is done because we use the models as semi-
|
|
persistent storage while the server was running. In some situations
|
|
the models would run out of scope and the WeakValueDictionary
|
|
then allowed them to be garbage collected. With this change they
|
|
are guaranteed to remain (which is good for persistence but
|
|
potentially bad for memory consumption).
|
|
- We add some caching/reset hooks called from the server side.
|