Est-il possible de limiter la durée d'exécution du code utilisateur dans JRuby?Limite de temps d'exécution du code utilisateur (JRuby)
Répondre
Je ne sais pas comment vous intégrez le code Ruby, mais vous pouvez facilement avoir un fil d'horloge de fond qui permet d'évaluer
raise YourTimeLimitExceededException, 'no more time'
après une période de temps. Vous souhaiterez également désactiver Thread.new et Thread.start (ainsi que java.lang.Thread.new) pour le code utilisateur, ou ils pourraient facilement contourner votre minuteur.
Pouvez-vous élaborer sur votre réponse, s'il vous plaît? (J'utilise JRuby-embed) – instantsetsuna
Avoir un thread d'arrière-plan mesure le temps passé et appelle 'scriptingContainer.evalScriptlet (" raise Timeout :: Timeout ")' à partir du thread de minuteur. Vous pouvez utiliser les futures java.util.concurrent pour vous assurer que le timeout ne sera pas levé si le script se termine à temps. –
Merci pour la réponse, je vais y jeter un coup d'oeil! :) – instantsetsuna
- 1. Comment profiler le code JRuby?
- 2. Commande Scons avec limite de temps
- 3. Test du code critique de temps
- 4. Temps CPU utilisateur vs Temps système CPU?
- 5. Calcul du temps par le code C++
- 6. Comment puis-je modifier la limite de temps pour webClient.UploadData()?
- 7. Est-ce que AssemblyCleanup a une limite de temps
- 8. code de correction d'erreur limite supérieure
- 9. Limite de démarrage du processus
- 10. Limite apparaissant à droite du signe de limite dans LaTeX
- 11. ajouter un essai avec la limite de temps dans vb.net
- 12. Comment testez-vous le temps de fonctionnement du code VBA?
- 13. Analyse du code de schéma pour l'espace et le temps
- 14. Comptage des lignes de code modifiées au fil du temps
- 15. GUI super simples dans JRuby
- 16. Limite de taille du dictionnaire pré-déclarée?
- 17. Application Jruby Rails sur les pics d'utilisation du processeur Tomcat
- 18. complexité Temps code donné
- 19. Limite du cache de l'application de l'application
- 20. Amélioration du code et des performances de l'interface utilisateur
- 21. jRuby Zip de mémoire
- 22. WPF code de temps de conception
- 23. JRuby 1.5.5 continue de lancer JRuby: option inconnue --disable-gemmes
- 24. Déplacement du code d'interface utilisateur Qt vers une classe distincte
- 25. JRuby - Tempfile.rb
- 26. Limite limite de MovieClip (AS3)
- 27. taille du tableau de service Web limite
- 28. Étrangeté lors du déploiement de l'application JRuby sous Jetty
- 29. Limite de bloc Memcached
- 30. Code sous contrôle utilisateur
Désolé d'être vague. Le code ruby fourni par l'utilisateur est en cours d'exécution à l'intérieur de mon application Java. J'ai donc besoin d'un moyen de l'exécuter uniquement pendant un certain temps. C'est nécessaire parce que l'utilisateur peut écrire du code qui aboutit à des boucles infinies - cela devrait être évité. – instantsetsuna
Je ne sais pas comment le faire en Java, mais dans Ruby vous pouvez le faire avec la librairie Timeout: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/timeout/rdoc/Timeout. html –