Windowsでpython 2.7を使用してcherrypyアプリケーションを実行しています(およびpipiのcherrypyバージョンを使用しています)。アプリケーションはイントラネットで実行されており、基本的には次のコードのような構造になっています。
このアプリケーションを newrelic で監視するために、newrelic のドキュメントで説明されているようにラップしてみました。しかし、cherrypy アプリケーションは機能していましたが、その方法で起動した場合、newrelic バックエンドには表示されませんでした。
また、newrelic エージェントを の 1 行後に挿入する手動の方法も試しましたdef main():
。これにより、アプリケーションが newrerich バックエンドに表示されましたが、何も監視されませんでした。すべての図が空です。
私はすでに何時間もウェブを検索し、何の進展もなく何人かの同僚に尋ねました.
newrelic のドキュメントから、cherrypy アプリケーションで別の構造またはテクノロジーを選択する必要があると思われます。彼らは使用しませんquickstart
。私の質問は、アプリケーションを監視する newrelic の方法に適合するようにアプリケーションを変換するにはどうすればよいかということです。
これは多かれ少なかれ、アプリケーションのメイン ファイルです。
# -*- coding: utf-8 -*-
def main():
import cherrypy
from auth import AuthController
from my_routes import RouteOne, RouteTwo
dispatcher = cherrypy.dispatch.RoutesDispatcher()
dispatcher.explicit = False
dc = dispatcher.connect
dc(u'd_home', u'/', RouteOne().index_home)
dc(u'd_content', u'/content/', RouteOne().index_content)
dc(u'd_search', u'/search/:find', RouteRoot().index_search)
conf = {
'/' : {
u'request.dispatch' : dispatcher,
u'tools.staticdir.root' : 'c:/app/src',
u'tools.sessions.on' : True,
u'tools.auth.on': True,
u'tools.sessions.storage_type' : "file",
u'tools.sessions.storage_path' : 'c:/app/sessions',
u'tools.sessions.timeout' : 60,
u'log.screen' : False,
u'log.error_file' : 'c:/app/log/error.txt',
u'log.access_file' : 'c:/app/log/access.txt',
},
u'/app/public' : {
u'tools.staticdir.debug' : True,
u'tools.staticdir.on' : True,
u'tools.staticdir.dir' : u"public",
},
}
# ... some additional initialisation left out ...
cherrypy.tree.mount(None, u"/", config=conf)
cherrypy.config.update({
'server.socket_host': myhost.test.com,
'server.socket_port': 8080,})
from auth import check_auth
cherrypy.tools.auth = cherrypy.Tool('before_handler', check_auth)
cherrypy.quickstart(None, config=conf)
if __name__ == "__main__":
main()
wsgiのように、構成、ディスパッチ、認証、ルートなどのさまざまな部分をnewrelicと互換性のある方法で構築して、監視できるようにしてください。
私は必要に応じて別のことをする準備ができています.Pythonではほとんどすべてが可能であることを知っています.
これが wsgi アプリケーションである必要がある場合、どうすれば変更できますか? 私は他の方法(のような)よりもこれを好むでしょうpaste
。
私はこれについて具体的なことを見つけることができなかったので、これが他の多くの人々にも役立つことを願っています. 私はチェリーピーのドキュメントに多くの時間を費やしましたが、どういうわけか、さまざまな部分をまとめることができませんでした.