Notes
μ΄λ² λ¦΄λ¦¬μ€ μμ΄μ νΈμλ LangGraph μμ΄μ νΈμ λν μ§μμ΄ μΆκ°λμμ΅λλ€.
easy_install/pip/distribute μ¬μ©νμ¬ μμ΄μ νΈλ₯Ό μ€μΉνμΈμ. νμ΄μ¬ ν¨ν€μ§ μΈλ±μ€λ₯Ό ν΅ν΄ conda μ¬μ©νκ±°λ, Conda-Forge ν¨ν€μ§ μΈλ±μ€λ₯Ό ν΅ν΄ μ μ¬μ©νκ±°λ, λ΄λ λ¦ λ€μ΄λ‘λ μ¬μ΄νΈ μμ μ§μ λ€μ΄λ‘λνμΈμ.
νΉμ§
LangGraph μμ΄μ νΈ μ§μμ μΆκ°ν©λλ€.
- LangChain μ
create_agent()μ ν΅ν΄ LangGraph μμ΄μ νΈ νΈμΆμ μν μΈ‘μ , 리μμ€λ₯Ό μΆκ°ν©λλ€. μ¬κΈ°μλinvoke(),ainvoke(),stream(),astream()μ λν μμ΄μ νΈ ν΅νκ° ν¬ν¨λ©λλ€.
- LangChain μ
μ§μ§ μ±λͺ
μ΅μ μμ΄μ νΈ λ²μ μ΄ μΆμλλ©΄ μ¦μ μ λ°μ΄νΈνλ κ²μ΄ μ’μ΅λλ€. μ΅μ λ²μ μΌλ‘ μ κ·Έλ μ΄λν μ μλ κ²½μ°, μμ΄μ νΈλ₯Ό 90μΌ μ΄λ΄ λ²μ μΌλ‘ μ λ°μ΄νΈνμΈμ. μμ΄μ νΈμκ² μ΅μ μ 보λ₯Ό μ 곡νλ λ°©λ²μ λν΄ μμΈν μμ보μΈμ.
μμ΄μ νΈ λ¦΄λ¦¬μ€ λ° μ§μ λ μ§μ λν μ 보λ λ΄λ λ¦ λμ΄ λΉκΈ°λ μμ΄μ νΈ EOL μ μ± μ μ°Έμ‘°νμΈμ.
Notes
μ΄λ² νμ΄μ¬ λꡬ 릴리μ€μμλ notice_error() μ μ€λ₯λ₯Ό μ λ¬νλ μλ‘μ΄ λ°©λ²μ΄ μΆκ°λκ³ , Strands-μμ΄μ νΈ λκΈ° λꡬ μ€λ₯ μΊ‘μ² μ§μμ΄ μΆκ°λκ³ , gpt-5 λ° μ΅μ OpenAI LLM λͺ¨λΈ μ§μμ΄ μΆκ°λκ³ , Azure Functions μ νμ© λ
Όλ¦¬μμ λ°μνλ μΆ©λμ΄ μμ λμμ΅λλ€.
easy_install/pip/distribute μ¬μ©νμ¬ μμ΄μ νΈλ₯Ό μ€μΉνμΈμ. νμ΄μ¬ ν¨ν€μ§ μΈλ±μ€λ₯Ό ν΅ν΄ conda μ¬μ©νκ±°λ, Conda-Forge ν¨ν€μ§ μΈλ±μ€λ₯Ό ν΅ν΄ μ μ¬μ©νκ±°λ, λ΄λ λ¦ λ€μ΄λ‘λ μ¬μ΄νΈ μμ μ§μ λ€μ΄λ‘λνμΈμ.
νΉμ§
μμΈ μΈμ€ν΄μ€λ₯Ό μΈμλ‘ μ§μνλ κΈ°λ₯μ μΆκ°ν©λλ€.
notice_error()notice_error()μ΄μ errorμΈμμ λν΄sys.exc_info()μ μμΈ νν λμ try/except λΈλ‘μμ λ°μν κ²κ³Ό κ°μ ν¬μ°©λ μμΈ μΈμ€ν΄μ€λ₯Ό νμ©ν μ μμ΅λλ€.μ΄λ κΈ°μ‘΄ λμμ λ체νλ κ²μ΄ μλλΌ μΆκ°λλ κΈ°λ₯μ λλ€. μΈμκ° μκ±°λ μμΈ ννκ³Ό ν¨κ»
notice_error()μ¬μ©νλ μ΄μ λ°©μμ μ¬μ ν μ¬λ°λ₯΄κ² μλν΄μΌ ν©λλ€.
gpt-5λ° κ·Έ μ΄ν λ²μ μ OpenAI LLM λͺ¨λΈμ λν μ§μμ μΆκ°ν©λλ€.- OpenAI μΈ‘μ , λ‘κ·Έμ μ λ°μ΄νΈλ₯Ό μΆκ°νμ¬ μ΅μ OpenAI λͺ¨λΈκ³Ό ν¨κ» μ¬μ©λλ μ΅μ μμ± μ΄λ¦μ μ§μν©λλ€.
Strands-μμ΄μ νΈ λκΈ°μ λꡬ μ€λ₯ μΊ‘μ² μ§μ μΆκ°
- Strands-μμ΄μ νΈμ λκ΅¬λ‘ μ¬μ©λλ λκΈ°μ λμ΄μ€κΈ° κΈ°λ₯μλ μ΄μ μ μ ν μ€λ₯ μΊ‘μ² κΈ°λ₯κ³Ό λ°μ΄ν°λ² μ΄μ€ μ‘°νμ κ°μ λꡬ λ΄ νΈλ μ΄μ€ μΊ‘μ² κΈ°λ₯μ΄ μμ΅λλ€.
λ²κ·Έ μμ
Azure Functions μ¬μ© μ€ μΆ©λμ λ°©μ§νμΈμ
- μ΄μ μλ μΌλΆ μ¬μ©μκ° Azure Functions μ¬μ©λ κ°μ§κ° μ κ· ννμμ μΌμΉμν€λ €κ³ ν λ μΆ©λνλ μμΈμ μΈ μν©μ κ²½ννμ΅λλ€. ν΄λΉ μ€λ₯λ μμ λμμΌλ©°, μμΌλ‘λ λ μ΄μ λ°μνμ§ μμ κ²μ λλ€.
μ§μ§ μ±λͺ
μ΅μ μμ΄μ νΈ λ²μ μ΄ μΆμλλ©΄ μ¦μ μ λ°μ΄νΈνλ κ²μ΄ μ’μ΅λλ€. μ΅μ λ²μ μΌλ‘ μ κ·Έλ μ΄λν μ μλ κ²½μ°, μμ΄μ νΈλ₯Ό 90μΌ μ΄λ΄ λ²μ μΌλ‘ μ λ°μ΄νΈνμΈμ. μμ΄μ νΈμκ² μ΅μ μ 보λ₯Ό μ 곡νλ λ°©λ²μ λν΄ μμΈν μμ보μΈμ.
μμ΄μ νΈ λ¦΄λ¦¬μ€ λ° μ§μ λ μ§μ λν μ 보λ λ΄λ λ¦ λμ΄ λΉκΈ°λ μμ΄μ νΈ EOL μ μ± μ μ°Έμ‘°νμΈμ.
Notes
μ΄λ² λ¦΄λ¦¬μ€ μμ΄μ νΈμλ λ€μμ λν μ§μμ΄ μΆκ°λμμ΅λλ€.
- κ°λ₯
- AWS λ² λλ½ μ»¨λ²μ€ μ€νΈλ¦¬λ°
- λ λμ€ λ©μλ
hybrid_searchλ°msetex - LLM μ΄λ²€νΈμ λν LangChain μν ν λΉ
- LLM μμ² μμ μ μΊ‘μ²λ LLM μ΄λ²€νΈ νμμ€ν¬ν
loop_factoryλ°μ, inasyncio.Runner
μ΄λ² 릴리μ€μμλ μΉ μλ²μμ ν€λκ° λ³΄κ³ λμ§ μλ ASGI μΈ‘μ λ° κ³μΈ‘μ λ²κ·Έλ ν΄κ²°λμμ΅λλ€.
easy_install/pip/distribute μ¬μ©νμ¬ μμ΄μ νΈλ₯Ό μ€μΉνμΈμ. νμ΄μ¬ ν¨ν€μ§ μΈλ±μ€λ₯Ό ν΅ν΄ conda μ¬μ©νκ±°λ, Conda-Forge ν¨ν€μ§ μΈλ±μ€λ₯Ό ν΅ν΄ μ μ¬μ©νκ±°λ, λ΄λ λ¦ λ€μ΄λ‘λ μ¬μ΄νΈ μμ μ§μ λ€μ΄λ‘λνμΈμ.
νΉμ§
Strandsμ§μμ μΆκ°ν©λλ€.
- λ¨μΌ λ° λ€μ€ μμ΄μ νΈ(κ΅°μ§, κ·Έλν λ±) μ€μ μμ Strands λꡬ λ° μμ΄μ νΈμ λν μΈ‘μ , 리μμ€ μΆκ°
AWS Bedrock Converse Streamingμ§μμ μΆκ°ν©λλ€.
- Converse API μ€νΈλ¦¬λ°μ λν λͺ¨λν°λ§ μ§μμ μΆκ°ν©λλ€. μ¬κΈ°μλ
converse_stream()μ μ¬μ©νμ¬ boto3 λ° aioboto3 ν΄λΌμ΄μΈνΈλ‘ μνλλ Converse μ±ν μλ£ νΈμΆμ λν μ§μμ΄ ν¬ν¨λ©λλ€.
- Converse API μ€νΈλ¦¬λ°μ λν λͺ¨λν°λ§ μ§μμ μΆκ°ν©λλ€. μ¬κΈ°μλ
λ λμ€ λ©μλ μ§μμ μΆκ°ν©λλ€.
λ€μ λ©μλμ λν μ§μμ μΆκ°νμΈμ.
hybrid_searchmsetex
loop_factoryμ λν μ§μμ μΆκ°ν©λλ€.asyncio.Runner- λμ΄μ€κΈ° 3.11μμλ
asyncio.Runnerν΄λμ€μloop_factoryλͺ¨λμ΄ μΆκ°λμμ΅λλ€.loop_factoryμμλ 루ν μ μ± μ λν λ체 λ°©λ²μ μ 곡ν©λλ€. μ΄μ μμ±λ 루νλ μ μ μ΄λ²€νΈ 루ν μ€μ μ ν΅νλ μ¬μ©μ μ μ λμ보λ 루νλ₯Ό ν΅νλ μκ΄μμ΄ μΉμΈλ©λλ€.
- λμ΄μ€κΈ° 3.11μμλ
LLM μ΄λ²€νΈμμ LangChain μν ν λΉ μΊ‘μ²
- LangChain
LlmChatCompletionMessageμ΄λ²€νΈμλ μ΄μ LangChain μμ ν λΉλ μν μ΄ ν¬ν¨λμ΄ μμ΅λλ€.
- LangChain
LLM μμ² μμ μ LLM μ΄λ²€νΈ νμμ€ν¬νλ₯Ό μΊ‘μ²ν©λλ€.
- μ΄μ μλ LLM μ΄λ²€νΈμ νμμ€ν¬νκ° μ΄λ²€νΈ μμ± μμ μ κΈ°λ‘λμμ΅λλ€. μ΄μ λ LLM μμ² μμ μ λμ± μ ννκ² κΈ°λ‘λ©λλ€.
λ²κ·Έ μμ
ASGI ν€λ μλΉ
ASGIWebTransactionμ΄http.response.startμ΄λ²€νΈμ ν€λλ₯Ό μλΉν λ, νμ©λλ μ λ ₯ μ νμ κ³ λ €νμ§ μκ³ κ·Έλ κ² νμ΅λλ€. ν€λκ° μμ±κΈ°μΈ κ²½μ° μμ±κΈ°λprocess_response()νΈμΆμ μν΄ μλΉλμ΄ μΉ μλ²κ° λ³΄λΌ ν€λκ° λ¨μ§ μμ΅λλ€. μ΄μ μ΄ λ¬Έμ λ ν΄κ²°λμμ΅λλ€.
μ§μ§ μ±λͺ
μ΅μ μμ΄μ νΈ λ²μ μ΄ μΆμλλ©΄ μ¦μ μ λ°μ΄νΈνλ κ²μ΄ μ’μ΅λλ€. μ΅μ λ²μ μΌλ‘ μ κ·Έλ μ΄λν μ μλ κ²½μ°, μμ΄μ νΈλ₯Ό 90μΌ μ΄λ΄ λ²μ μΌλ‘ μ λ°μ΄νΈνμΈμ. μμ΄μ νΈμκ² μ΅μ μ 보λ₯Ό μ 곡νλ λ°©λ²μ λν΄ μμΈν μμ보μΈμ.
μμ΄μ νΈ λ¦΄λ¦¬μ€ λ° μ§μ λ μ§μ λν μ 보λ λ΄λ λ¦ λμ΄ λΉκΈ°λ μμ΄μ νΈ EOL μ μ± μ μ°Έμ‘°νμΈμ.
Notes
μ΄λ² λμ΄ λΉκΈ°λ μμ΄μ νΈ λ¦΄λ¦¬μ€μλ λμ΄λΉκΉ 3.14 μ§μ, μμ± νν° μ€μ μ μν μλ‘μ΄ νκ²½ λ³μ, νλ‘μΈμ λ°μ½λ μ΄ν°μ λΉλκΈ° μμ±κΈ° μ§μ, AWS Bedrock μ μΆκ° λͺ¨λΈ λ° AWS Kinesis μ μλ‘μ΄ λ°©λ²μ΄ μΆκ°λμμ΅λλ€. μ΄ λ¦΄λ¦¬μ€μμλ ConnectionPool μ¬λ¬ λ² λννμ¬ μ¬μ©ν λ RecursionError μ΄ λ°μνλ aiomysql μ λ²κ·Έ, kombu μ νλ‘λμμμ μμ±μ΄ μ λλ‘ μ λ¬λμ§ μλ λ²κ·Έ, νλ² μ€νΈ μ€λ λ λ΄μμ shutdown_agent νΈμΆλ λ λ°μνλ μ€λ₯λ₯Ό μμ ν©λλ€.
easy_install/pip/distribute μ¬μ©νμ¬ μμ΄μ νΈλ₯Ό μ€μΉνμΈμ. νμ΄μ¬ ν¨ν€μ§ μΈλ±μ€λ₯Ό ν΅ν΄ conda μ¬μ©νκ±°λ, Conda-Forge ν¨ν€μ§ μΈλ±μ€λ₯Ό ν΅ν΄ μ μ¬μ©νκ±°λ, λ΄λ λ¦ λ€μ΄λ‘λ μ¬μ΄νΈ μμ μ§μ λ€μ΄λ‘λνμΈμ.
νΉμ§
λμ΄λΉκΉ 3.14 μ§μ μΆκ°
- λμ΄μ€κΈ° 3.14μ λν μ§μμ μΆκ°ν©λλ€.
μμ± νν° μ€μ μ λν νκ²½ λ³μ μΆκ°
λ€μ μ€μ μ μ΄μ νκ²½ λ³μλ₯Ό ν΅ν΄ μ€μ ν μ μλ μ΅μ μ΄ μκ²Όμ΅λλ€.
κ΅¬μ± μ€μ νκ²½ λ³μ attributes.enabledNEW_RELIC_ATTRIBUTES_ENABLEDattributes.excludeNEW_RELIC_ATTRIBUTES_EXCLUDEattributes.includeNEW_RELIC_ATTRIBUTES_INCLUDEbrowser_monitoring.attributes.enabledNEW_RELIC_BROWSER_MONITORING_ATTRIBUTES_ENABLEDbrowser_monitoring.attributes.excludeNEW_RELIC_BROWSER_MONITORING_ATTRIBUTES_EXCLUDEbrowser_monitoring.attributes.includeNEW_RELIC_BROWSER_MONITORING_ATTRIBUTES_INCLUDEerror_collector.attributes.enabledNEW_RELIC_ERROR_COLLECTOR_ATTRIBUTES_ENABLEDerror_collector.attributes.excludeNEW_RELIC_ERROR_COLLECTOR_ATTRIBUTES_EXCLUDEerror_collector.attributes.includeNEW_RELIC_ERROR_COLLECTOR_ATTRIBUTES_INCLUDEspan_events.attributes.enabledNEW_RELIC_SPAN_EVENTS_ATTRIBUTES_ENABLEDspan_events.attributes.excludeNEW_RELIC_SPAN_EVENTS_ATTRIBUTES_EXCLUDEspan_events.attributes.includeNEW_RELIC_SPAN_EVENTS_ATTRIBUTES_INCLUDEtransaction_events.attributes.enabledNEW_RELIC_TRANSACTION_EVENTS_ATTRIBUTES_ENABLEDtransaction_events.attributes.excludeNEW_RELIC_TRANSACTION_EVENTS_ATTRIBUTES_EXCLUDEtransaction_events.attributes.includeNEW_RELIC_TRANSACTION_EVENTS_ATTRIBUTES_INCLUDEtransaction_segments.attributes.enabledNEW_RELIC_TRANSACTION_SEGMENTS_ATTRIBUTES_ENABLEDtransaction_segments.attributes.excludeNEW_RELIC_TRANSACTION_SEGMENTS_ATTRIBUTES_EXCLUDEtransaction_segments.attributes.includeNEW_RELIC_TRANSACTION_SEGMENTS_ATTRIBUTES_INCLUDEtransaction_tracer.attributes.enabledNEW_RELIC_TRANSACTION_TRACER_ATTRIBUTES_ENABLEDtransaction_tracer.attributes.excludeNEW_RELIC_TRANSACTION_TRACER_ATTRIBUTES_EXCLUDEtransaction_tracer.attributes.includeNEW_RELIC_TRANSACTION_TRACER_ATTRIBUTES_INCLUDE
νΈλμμ λ°μ½λ μ΄ν°μ λΉλκΈ° μμ±κΈ° μ§μ μΆκ°
- μ΄μ μλ νΈλμμ λ°μ½λ μ΄ν°κ° λΉλκΈ° μμ±κΈ°λ₯Ό κ°μΈλ κ²μ μ§μνμ§ μμμ΅λλ€. μ΄ μ§μμ΄ μΆκ°λμ΄ μ΄μ λΉλκΈ° μμ±κΈ° νΈλμμ μ΄ μ΄λ²€νΈ 루ν λκΈ° μκ°κ³Ό κΈ°ν ν΅κ³λ₯Ό μλμΌλ‘ μΈ‘μ ν©λλ€.
AWS Bedrock μΈ‘μ , λ‘κ·Έμ μΆκ° λͺ¨λΈμ λν μ§μ μΆκ°
λ€μ μΆκ° λͺ¨λΈμ μ§μνλλ‘ botocore λ° aiobotocore ν΅ν΄ AWS Bedrock μΈ‘μ , κ³μΈ‘μ μ λ°μ΄νΈν©λλ€.
- ν΄λ‘λ μλ€νΈ 3+ λͺ¨λΈ
- μ§μμΌλ‘ μ λμ¬κ° λΆμ λͺ¨λΈ(μ§μ μΈμ)
μλ‘μ΄ Kinesis λ©μλμ λν μΈ‘μ , λ‘κ·Έ μΆκ°
μλ‘μ΄ AWS Kinesis λ©μλλ₯Ό μ§μνκΈ° μν΄ botocore μΈ‘μ , 리μμ€ μΆκ°
describe_account_settingsupdate_account_settingsupdate_max_record_sizeupdate_stream_warm_throughput
λ²κ·Έ μμ
aiomysql ConnectionPoolμμ RecursionError λ°©μ§
- μ΄μ μλ ν μ°κ²°μ μ¬μ©ν λ aiomysql μμ
RecursionErrorμ΄ λ°μνμ΅λλ€. λ°λ³΅μ μΈ λνμΌλ‘ μΈν΄ νλ§λ μ°κ²° μ£Όμμ κΉμObjectProxy체μΈμ΄ μμ±λμμ΅λλ€. μ΄ λ¬Έμ λ ν΄κ²°λμμ΅λλ€.
- μ΄μ μλ ν μ°κ²°μ μ¬μ©ν λ aiomysql μμ
kombu μ νλ‘λμμμ μμ±μ΄ μ λλ‘ μ λ¬λμ§ μλ λ²κ·Έλ₯Ό μμ νμ΅λλ€.
kombu.messaging.Producer.publish()μ λν μΈ‘μ , κ³μΈ‘μΌλ‘ μΈν΄ μμ±μ΄ μ€μλ‘ μ¬μ λ΄λΆμ μ€μ²©λμ΄ μμ±μ΄ μλͺ»λ μμΉμ μκ³ λ€μ΄μ€νΈλ¦Ό ν¨ν€μ§μμ μ½νμ§ μλ λ²κ·Έλ₯Ό μμ νμ΅λλ€.
shutdown_agentμ΄ μν μ€λ λ λ΄μμ νΈμΆλ λ λ°μνλ μ€λ₯λ₯Ό μμ ν©λλ€.- μ΄μ μλ
shutdown_agentμν μ€λ λ λ΄μμ νΈμΆλλ©΄RuntimeErrorμ΄ λ°μν μ μμμ΅λλ€. μ΄λ κ² νλ©΄ μΆ©λμ λ°©μ§νκΈ° μν λ³΄νΈ μ₯μΉκ° μΆκ°λμ΄ λ¬Έμ κ° ν΄κ²°λ©λλ€.
- μ΄μ μλ
μ§μ§ μ±λͺ
μ΅μ μμ΄μ νΈ λ²μ μ΄ μΆμλλ©΄ μ¦μ μ λ°μ΄νΈνλ κ²μ΄ μ’μ΅λλ€. μ΅μ λ²μ μΌλ‘ μ κ·Έλ μ΄λν μ μλ κ²½μ°, μμ΄μ νΈλ₯Ό 90μΌ μ΄λ΄ λ²μ μΌλ‘ μ λ°μ΄νΈνμΈμ. μμ΄μ νΈμκ² μ΅μ μ 보λ₯Ό μ 곡νλ λ°©λ²μ λν΄ μμΈν μμ보μΈμ.
μμ΄μ νΈ λ¦΄λ¦¬μ€ λ° μ§μ λ μ§μ λν μ 보λ λ΄λ λ¦ λμ΄ λΉκΈ°λ μμ΄μ νΈ EOL μ μ± μ μ°Έμ‘°νμΈμ.
Notes
μ΄ λμ΄ λΉκΈ°λ μμ΄μ νΈ λ¦΄λ¦¬μ€λ Django μΈ‘μ μ μ΄κΈ° νμ±ν, μμ€, 무μλλ max_samples_stored μ λν μλ² μΈ‘ μ¬μ μ λ° Python trace_cache.pop() μ μΆ©λ λ°©μ§μ λν μμ μ¬νμ μ 곡ν©λλ€.
λμ΄μ€κΈ° ν¨ν€μ§ μμΈμ ν΅ν΄ easy_install/pip/distribute μ¬μ©νμ¬ μμ΄μ νΈλ₯Ό μ€μΉνκ±°λ λ΄λ λ¦ λ€μ΄λ‘λ μ¬μ΄νΈ μμ μ§μ λ€μ΄λ‘λνμΈμ.
λ²κ·Έ μμ
Django μΈ‘μ , λ‘κ·Έμ μ‘°κΈ° νμ±ν λ°©μ§
- Django μΈ‘μ μμ
application_settings()μ λν νΈμΆμ μ κ±°νμ¬ pre-forkμ μ΄κΈ° νμ±ν κ΄λ ¨ λ¬Έμ λ₯Ό λ°©μ§ν©λλ€.
- Django μΈ‘μ μμ
μλ² μ€μ μ λ‘컬 μ€μ λκΈ°ν λ¬Έμ μμ
- μ΄λ
event_harvest_config.harvest_limits.*μ€μ μ΄*.max_samples_storedμ€μ μΌλ‘ μΈν΄ λ μ΄μ μ¬μ©λμ§ μμ λ λ°μν λ²κ·Έλ₯Ό μμ ν©λλ€. μΌλΆ μλ²μΈ‘ μ€μ μ΄ ν΄λΌμ΄μΈνΈμΈ‘ μ€μ μ μ¬μ μνμ§ μμ μ¬μ©μκ° μ΄λ₯Ό λΉνμ±ννμμλ λΆκ΅¬νκ³ λ°μ΄ν°κ° μμ§κΈ°λ‘ μ μ‘λμμ΅λλ€.
- μ΄λ
μΆ©λλ‘λΆν° 보νΈνμΈμ
trace_cache.pop()ContextOfν΄λμ€μμ κΈ°λ³Έκ° μμ΄pop(key)ν΅ν΄trace_cacheμ μμ νμ§ μμ μ‘μΈμ€κ° λ°μνμ΅λλ€. μ¬μ μweakrefμ΄ μ΄λ―Έ κ°λΉμ§ μμ§λ κ²½μ° μΆ©λμ΄ λ°μνμ΅λλ€.
μ§μ§ μ±λͺ
μ΅μ μμ΄μ νΈ λ²μ μ΄ μΆμλλ©΄ μ¦μ μ λ°μ΄νΈνλ κ²μ΄ μ’μ΅λλ€. μ΅μ λ²μ μΌλ‘ μ κ·Έλ μ΄λν μ μλ κ²½μ°, μμ΄μ νΈλ₯Ό 90μΌ μ΄λ΄ λ²μ μΌλ‘ μ λ°μ΄νΈνμΈμ. μμ΄μ νΈμκ² μ΅μ μ 보λ₯Ό μ 곡νλ λ°©λ²μ λν΄ μμΈν μμ보μΈμ.
μμ΄μ νΈ λ¦΄λ¦¬μ€ λ° μ§μ λ μ§μ λν μ 보λ λ΄λ λ¦ λμ΄ λΉκΈ°λ μμ΄μ νΈ EOL μ μ± μ μ°Έμ‘°νμΈμ.
Notes
Advertencia
This version of the agent has been yanked.
This release of the Python agent makes the following changes:
- Removes support for Python 3.7
- Removes and or deprecates various APIs and settings
- Deprecates aioredis instrumentation
- Raises the minimum supported version of
setuptoolsandsetuptools_scm - Adds new instrumentation for AutoGen
- Adds new instrumentation for Pyzeebe
- Adds new MCP (Model Context Protocol) named spans
- Fixes a crash in psycopg
- Ensures MCP spans are only recorded when AI monitoring is enabled
Install the agent using easy_install/pip/distribute via the Python Package Index or download it directly from the New Relic download site.
Removed features
Removes support for Python 3.7
- Python 3.7 was EOL'd June 27, 2023. The Python agent has dropped support for it.
Removes various deprecated APIs
The following APIs have been removed:
Legacy API Replacement API accept_distributed_trace_payloadaccept_distributed_trace_headersadd_custom_parameteradd_custom_attributeadd_custom_parametersadd_custom_attributescreate_distributed_trace_payloadinsert_distributed_trace_headersget_browser_timing_footerThe functionality of this has been wrapped into get_browser_timing_header()record_exceptionnotice_error()NewRelicLogHandlerNewRelicLogForwardingHandlerlambda_handler&LambdaHandlerWrapperThese APIs have moved to the newrelic-lambdapackage.
Removes various deprecated settings
The following settings have been removed:
Legacy Setting Replacement Setting transaction_tracer.capture_attributestransaction_tracer.attributes.enablederror_collector.capture_attributeserror_collector.attributes.enabledbrowser_monitoring.capture_attributesbrowser_monitoring.attributes.enabledanalytics_events.enabledtransaction_events.enabledanalytics_events.capture_attributestransaction_events.attributes.enablederror_collector.ignore_errorserror_collector.ignore_classesstrip_exception_messages.whiteliststrip_exception_messages.allowlistsslThis is now hardcoded to trueso it has been removed as a setting option.ignored_paramsUse newrelic.attributes.exclude = request.parameters.{name}instead. Add each request parameter key to thenewrelic.attributes.excludelist, delimited by commas. Be sure to prepend the key withrequest.parameters.agent_limits.merge_stats_maximumThis is now completely ignored in favor of serverside config.
Deprecated features
Instrumentation for aioredis has been deprecated
Deprecates some existing harvest settings to match other language agents
In order to be more consistent with the conventions of the other language agents, the following harvest settings are now deprecated:
Legacy Setting Replacement Setting event_harvest_config.harvest_limits.analytic_event_datatransaction_events.max_samples_storedevent_harvest_config.harvest_limits.span_event_dataspan_events.max_samples_storedevent_harvest_config.harvest_limits.error_event_dataerror_collector.max_event_samples_storedevent_harvest_config.harvest_limits.custom_event_datacustom_insights_events.max_samples_storedevent_harvest_config.harvest_limits.log_event_dataapplication_logging.forwarding.max_samples_storedThis is a revert of a previous change that renamed these settings from
*.max_samples_storedto theevent_harvest_config.harvest_limits.*form. This decision has been reversed, and the original settings named have been restored to match the other language agents who did not change these settings names. The deprecated settings will continue to work for now, but they will be removed in a future release.
Deprecates configuration of the agent through the WSGI environ dictionary
The following settings which were previously possible to configure through the WSGI environ dictionary are now deprecated. Please configure these settings through environment variables or the config file.
newrelic.set_background_tasknewrelic.suppress_apdex_metricnewrelic.suppress_transaction_tracenewrelic.capture_request_paramsnewrelic.disable_browser_autorum
Deprecates support for building the agent with
setuptools<61.2orsetuptools_scm<6.4- The minimum supported versions of
setuptoolsandsetuptools_scmhave been increased to61.2and6.4respectively. This is to support the use ofpyproject.tomlfor configuring the package metadata and building instructions. The agent can now be built with more modern build tools which will no longer log warnings about the lack of apyproject.tomlfile. - This change adds new version attributes to the packages,
newrelic.__version__andnewrelic.__version_tuple__, which can be used to programmatically check the version of the agent at runtime.
- The minimum supported versions of
New features
Adds new instrumentation for AutoGen
- Adds instrumentation (named spans and custom
Llmevents) for agents and tools in AutoGen
- Adds instrumentation (named spans and custom
Adds new instrumentation for Pyzeebe
- Adds automatic instrumentation and framework-specific agent attributes for Pyzeebe
Adds new MCP (Model Context Protocol) named spans
- Adds new named spans for MCP (Model Context Protocol) tool calls made via tool manager to support Streamable HTTP
Bug fixes
Fixes a crash in
psycopg>=3.2.0when callingas_string()- Fixes an issue in
psycopg>=3.2.0where theas_string()method no longer required arguments, causing a potential crash. This has been fixed, and both signatures of this method are supported.
- Fixes an issue in
Ensures MCP (Model Context Protocol) spans are only recorded when AI monitoring is enabled
- Ensures MCP (Model Context Protocol) spans are only recorded when the setting
ai_monitoring.enabledis enabled.
- Ensures MCP (Model Context Protocol) spans are only recorded when the setting
Support statement
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Python agent EOL policy for information about agent releases and support dates.