Python scripts for back end coding in AEM | Community
Skip to main content
Level 2
September 15, 2017
Solved

Python scripts for back end coding in AEM

  • September 15, 2017
  • 11 replies
  • 6045 views

Is it feasible to include python code for backend functionality in AEM (as UI has to be done in AEM)? Can you please also state the issues one might face , while integrating python codes in AEM?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by joerghoh

Hi,

AEM runs inside a JVM and has Java APIs. So if you want to to run Python code inside the JVM, you should use a JVM-based Python engine (maybe Jython).

The next thing is that you need to translate the Java interfaces and make them usable in Python. And the next step would be the tooling (I am specifically talking about the annotations handled by the maven-scr-plugin and the maven-bundle-plugin) to make this approach feasible and not only a proof of concept.

I would not go down this route, but rather take a language, where the tooling already exists and where support is available plus other people who can help you with questions.

If you want to run your python code outside of AEM in a separate process and make it usable via a HTTP interface: That will no be problem, but you always have a network connection.

Jörg

11 replies

Sheena_Kaul
Adobe Employee
Adobe Employee
September 15, 2017
smacdonald2008
Level 10
September 15, 2017

We have no HELPX or docs that can help for this use case. However - community seems to have created a GITHub project  -- see:

GitHub - Sensis/pyaem: Python client for Adobe Experience Manager (AEM) API

smacdonald2008
Level 10
September 15, 2017

However - Adobe recommends using HTL for components.

joerghoh
Adobe Employee
joerghohAdobe EmployeeAccepted solution
Adobe Employee
September 15, 2017

Hi,

AEM runs inside a JVM and has Java APIs. So if you want to to run Python code inside the JVM, you should use a JVM-based Python engine (maybe Jython).

The next thing is that you need to translate the Java interfaces and make them usable in Python. And the next step would be the tooling (I am specifically talking about the annotations handled by the maven-scr-plugin and the maven-bundle-plugin) to make this approach feasible and not only a proof of concept.

I would not go down this route, but rather take a language, where the tooling already exists and where support is available plus other people who can help you with questions.

If you want to run your python code outside of AEM in a separate process and make it usable via a HTTP interface: That will no be problem, but you always have a network connection.

Jörg

kautuk_sahni
Community Manager
Community Manager
September 18, 2017

This is classic java python integration use case:- How to execute Python script from Java? - Stack Overflow

See this post:- AEM OSGI and PYTHON(yowsup)

I would say that it is not in the spirit of Java to run a shell script from Java. Java is meant to be cross-platform, and running a script would limit its use to just a few. This is also not a scalable approach.

I would also recommend having REST way to get access to the information to/from the python.

~kautuk

Kautuk Sahni
joerghoh
Adobe Employee
Adobe Employee
September 18, 2017

kautuksahni​ wrote:

> I would say that it is not in the spirit of Java to run a shell script from Java. Java is meant to be cross-platform, and running a script would limit its use to just a few. This is also not a scalable approach.

He wants to say: Don't do it!

:-)

Jörg

Level 2
September 19, 2017

Hi Jorg,

Thank you for giving such clarity to my query.It was really helpful. One more help from you Jorg, you said about this:

If you want to run your python code outside of AEM in a separate process and make it usable via a HTTP interface: That will no be problem, but you always have a network connection

Can you please give me some more idea about it ..in implementing the same?

Thank You.

Saismita

:-)

Level 2
September 19, 2017

Thanks Kautuksahni for your reply :-)

joerghoh
Adobe Employee
Adobe Employee
September 19, 2017

Typically your python code would expose a HTTP interface, which you can access from AEM.

Jörg

smacdonald2008
Level 10
September 20, 2017

We have article that shows use of HTTP APIs in AEM.