{"id":3201,"library":"opentelemetry-instrumentation-remoulade","title":"OpenTelemetry Remoulade Instrumentation","description":"This library provides OpenTelemetry instrumentation for the 'Remoulade' Python framework, enabling automatic tracing of requests and operations within Remoulade applications. It is part of the `opentelemetry-python-contrib` repository, with the current version being 0.61b0. As a contrib package, its release cadence aligns with the broader OpenTelemetry Python Contrib project, which typically sees new beta releases every few weeks to months.","status":"active","version":"0.61b0","language":"en","source_language":"en","source_url":"https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-remoulade","tags":["opentelemetry","instrumentation","tracing","distributed-tracing","remoulade","actor-model"],"install":[{"cmd":"pip install opentelemetry-instrumentation-remoulade","lang":"bash","label":"Install only Remoulade instrumentation"},{"cmd":"pip install opentelemetry-contrib-instrumentations","lang":"bash","label":"Install all contrib instrumentations (including Remoulade)"}],"dependencies":[{"reason":"The library instruments 'remoulade' and requires it to be present in the environment to function. This is a peer dependency.","package":"remoulade","optional":false},{"reason":"Core OpenTelemetry API required by all instrumentations.","package":"opentelemetry-api","optional":false},{"reason":"Core OpenTelemetry SDK for span and tracer management (often implicitly installed with exporters).","package":"opentelemetry-sdk","optional":false}],"imports":[{"symbol":"RemouladeInstrumentor","correct":"from opentelemetry.instrumentation.remoulade import RemouladeInstrumentor"}],"quickstart":{"code":"import os\nfrom opentelemetry import trace\nfrom opentelemetry.sdk.resources import Resource\nfrom opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor\nfrom opentelemetry.instrumentation.remoulade import RemouladeInstrumentor\n\n# Assuming 'remoulade' and a broker like 'remoulade.brokers.rabbitmq' are installed\ntry:\n    from remoulade.brokers.rabbitmq import RabbitmqBroker\n    import remoulade\nexcept ImportError:\n    print(\"Please install 'remoulade' and a broker, e.g., 'pip install remoulade remoulade-rabbitmq'\")\n    exit()\n\n# Configure OpenTelemetry Tracer\nresource = Resource.create({\"service.name\": \"remoulade-app\"})\nprovider = TracerProvider(resource=resource)\nprocessor = SimpleSpanProcessor(ConsoleSpanExporter())\nprovider.add_span_processor(processor)\ntrace.set_tracer_provider(provider)\n\n# Instrument Remoulade\nRemouladeInstrumentor().instrument()\n\n# Remoulade application example\nbroker = RabbitmqBroker()\nremoulade.set_broker(broker)\n\n@remoulade.actor\ndef multiply(x, y):\n    print(f\"Multiplying {x} * {y}\")\n    return x * y\n\nbroker.declare_actor(multiply)\n\nprint(\"Sending Remoulade task...\")\nresult = multiply.send(43, 51)\nprint(f\"Task sent, check console for traces. Result (if synchronous): {result}\")\n\n# In a real async app, you'd typically wait for the result or use a consumer.\n# For this quickstart, we just show the instrumentation setup and task dispatch.","lang":"python","description":"This quickstart demonstrates how to initialize the OpenTelemetry SDK with a console exporter and then apply the `RemouladeInstrumentor` to automatically trace Remoulade operations. It includes a simple Remoulade actor example to show tracing in action."},"warnings":[{"fix":"Monitor the `opentelemetry-python-contrib` changelog for updates. Pin your dependency versions to mitigate unexpected changes.","message":"This library, as part of the `opentelemetry-python-contrib` project, is currently in a beta development stage. While functional, it may introduce breaking changes in future releases before reaching a stable 1.0 version.","severity":"gotcha","affected_versions":"0.x.x (all beta versions)"},{"fix":"Ensure `RemouladeInstrumentor().instrument()` is called early in your application's lifecycle, preferably before any Remoulade operations are performed.","message":"The `RemouladeInstrumentor` must be explicitly called with `.instrument()` to enable tracing. Automatic instrumentation via `opentelemetry-bootstrap` or environment variables may not always cover all specific use cases or might require specific configurations.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Install `remoulade` alongside this instrumentation (e.g., `pip install remoulade opentelemetry-instrumentation-remoulade`).","message":"This instrumentation requires the `remoulade` library to be installed in your environment. It is a peer dependency and not automatically installed with `opentelemetry-instrumentation-remoulade`.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-11T00:00:00.000Z","next_check":"2026-07-10T00:00:00.000Z"}