The problem with refcount of python object
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- python
- Ambito
- observability-sre
Direzione di ricerca
Esegui lo script Python fornito e registra refcount, l’output di cache_info e i messaggi di distruzione di TestObj prima e dopo get_object.cache_clear(). Esamina quindi le interazioni tra lru_cache, ThreadPoolExecutor e FluentHandler per determinare il comportamento atteso di ownership e definire una correzione riproducibile o la documentazione del risultato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
1. from functools import lru_cache
2. import fluent.handler
3. import logging
4. import logging.config
5. import sys
6. from concurrent.futures import ThreadPoolExecutor
7.
8. logging.basicConfig(level=logging.INFO)
9.
10. fluentd_format = {
11. 'hostname': '%(hostname)s',
12. 'module': '%(module)s.%(funcName)s',
13. 'where': '%(filename)s:%(lineno)d',
14. 'level': '%(levelname)s',
15. 'exception': '%(exc_text)s',
16. 'process': '%(processName)s',
17. }
18.
19.
20. def fluentd_handler(pendings):
21. if fluentd_handler.first_time:
22. fluentd_handler.first_time = False
23. print("failed to send log to fluentd")
24.
25.
26. fluentd_handler.first_time = True
27.
28. def setup_fluent(tag, host, port):
29. root = logging.getLogger()
30. fluent_handler = fluent.handler.FluentHandler(tag, host=host, port=port,
31. buffer_overflow_handler=fluentd_handler,
32. nanosecond_precision=True)
33. fluent_handler.setLevel(logging.INFO)
34. formatter = fluent.handler.FluentRecordFormatter(fluentd_format)
35. fluent_handler.setFormatter(formatter)
36. root.addHandler(fluent_handler)
37.
38. class TestObj(object):
39. def __init__(self, name, idx):
40. self.name = name
41. self.idx = idx
42.
43. def __del__(self):
44. print("test obj destroyed!")
45.
46. def doing(self):
47. print('name:%s,idx:%s' % (self.name, self.idx))
48.
49.
50. @lru_cache(maxsize=64)
51. def get_object(name , id):
52. return TestObj(name, id);
53.
54.
55. def cache_test():
56. obj1 = get_object('segment000', 0)
57. logging.info("TestObj's refcount is %s", sys.getrefcount(obj1))
58.
59. if __name__ == '__main__':
60. setup_fluent('cachetest', 'localhost', 24224)
61. pool = ThreadPoolExecutor(max_workers=2)
62. for i in range(20):
63. f = pool.submit(cache_test)
64. f.result()
65. logging.info('before clearing,cache info:%s', get_object.cache_info())
66. get_object.cache_clear()
67. logging.info('after clearing,cache info:%s', get_object.cache_info())
- Lingua principale
- Python
- Stelle
- 457
- Fork
- 138
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di fluent/fluent-logger-python
-
support of `asctime` Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
fluent/fluent-logger-python#210 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
fluent/fluent-logger-python#196 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
fluent/fluent-logger-python#195 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
fluent/fluent-logger-python#194 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
fluent/fluent-logger-python#190 ·
Tutte le issue di fluent/fluent-logger-python
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
use-agent-os/agent-os#3314 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
BasedHardware/omi#15662 · 1 commento ·
-
documentation help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
AiursoftWeb/AnduinOS-2#19 ·