4

I have quite a bit of experience with using Django for websites and so when I started a new project I naturally chose to use Django for it. Everything went well for a time but now the application is really starting to rub up against what Django can comfortably cope with and I fighting all the time to ensure that things work as intended.

I've been considering moving the site over to Java EE 7 now that it has been released. It certainly seems to provide the features I require as well as also being less forceful in the way that a project is laid out and maintained. I guess now that I have a good idea of how the application should be structured, development should be much faster.

Have you felt the need to change the web framework you are using simply because it doesn't lend itself well to the type of project you are trying to produce?

8
  • Yes, I moved from Symfony2 to Silex + twig + Symfony forms. The trigger was I was about to take an existing project and add major new functionality, and I realised I found Symfony2 just to limiting. Obviously there is all the usual "Never Rewrite!" reasons to consider carefully, but I think "wrong framework" can be a valid reason for a rewrite sometimes. In my case I could reuse large chunks of code which helped.
    – James
    Aug 19, 2013 at 6:20
  • 2
    Have you thought of moving from Django to Python rather than Java? You'll have the freedom to control how your project is structured and maintained and you may find the move easier, especially if it means you can reuse chunks of code directly.
    – James
    Aug 19, 2013 at 6:23
  • I've certainly considered other alternatives with Python, even a custom built Python framework but the fact of the matter is that the project has many distributed elements to it which from my own understanding is something that Java EE 7 could provide a big boost towards.
    – Cromulent
    Aug 19, 2013 at 6:53
  • I've also got a toy framework writtin in C++ which has potential to be expanded to do what I want it to do but then that would leave a lot maintenence burden on my shoulders and I'm not sure I'll have the time to expand and maintain it.
    – Cromulent
    Aug 19, 2013 at 6:55
  • 2
    @WayneKoorts Sure. The problem I'm currently facing is mixing a website frontend with a distributed backend written in differnet languages (there is some C++, Erlang and Haskell stuff to consider). Tasks need to be dispatched from the web frontend to the many backends asynchronously and reliably as well as also having certain tasks run regularly like a cron script but spread amongst these different systems. I'm striggling to find a clean and elegant solution for all these requirements in Django.
    – Cromulent
    Aug 21, 2013 at 3:26

1 Answer 1

4

You say:

The problem I'm currently facing is mixing a website frontend with a distributed backend written in differnet languages (there is some C++, Erlang and Haskell stuff to consider). Tasks need to be dispatched from the web frontend to the many backends asynchronously and reliably as well as also having certain tasks run regularly like a cron script but spread amongst these different systems. I'm striggling to find a clean and elegant solution for all these requirements in Django.

Reading this I am not sure that this is a Django problem, or even a web framework problem, but more that you should be looking at using some kind of message queue to send messages back and forth.

Something like RabbitMQ and Celery might be what you are looking for. These will let you dispatch tasks to the backends and also schedule tasks as you need them.

1
  • Good point. In fact I've already begun looking into Celery. Hopefully it'll provide the flexibility that I require but I'm not entirely sure it will be able to handle everything that I am going to throw at it.
    – Cromulent
    Aug 27, 2013 at 2:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.