5

私はAndroidが初めてです。私は、CGI スクリプトであり、小さなデータベース用の SMS ベースの対話システムでもある Python プログラムを持っています。これは、草の根組織によって運営されている非常に需要の少ないシステム (少数のユーザー) です。ただし、ランダムなクラッシュやダウンタイムがないという意味で、安定性が必要です。さまざまな理由から、これを Android フォンで実行すると、既存のセットアップに関するいくつかの問題が解決されます。しかし、本題に入る前に、そのようなシステムの実現可能性について確認したいと思いました。次のことを行う必要があります。

  • CGI スクリプトを実行できる Web サーバーを実行する (vanilla CGI)
  • SMS に応答する
  • SQLite データベースを処理する
  • Python で実行します (Java への移植は時間の制約により実行できないため)。

この段階では、電話ユーザーとのインターフェイスは必要ありません。

必要な部分が存在することは承知しています.CGIを備えたWebサーバーSL4Aなどです。しかし、Webサーバーは主に個人的な使用を目的としているようであり、SL4Aは「アルファ品質のソフトウェア」であると明確に述べています。SL4A に関連する SO に関するさまざまな質問も、この種のユース ケースについてはあまり語っていないようです。彼らは電話用のアプリケーション開発に焦点を当てています (このような)

要するに、そのようなシステムは安定しますか? コアプログラムが健全であると仮定すると、それを信頼できますか?

4

4 に答える 4

8

TLDR : CherryPy は信頼できるサーバーであり、Android は最近サーバーを構築するのに十分信頼できるかもしれません。


以前は、CherryPy と SL4A (websocket に ws4py を使用) を使用するプロジェクトを維持していました。

CherryPy 3.2.2 は、Python 2.6 および Python 3.2 で完全に動作しました。

多くの場合、アプリケーションは 1 日か 2 日実行されていました。もっと長く走ればよかったのにと思ったのですが、開発途中で何度もリスタートしてしまいました。

CherryPy は常に問題ありませんでしたが、Android デバイスがクラッシュすることがあるため、SL4A は時々終了し、再起動する必要があります。これは、サーバーとしてのみ使用されたデバイスでは問題にならない場合があります。私にとっては、デバイスを一晩実行したままにしておくと常に安定していましたが、デバイスを通常に使用しているときにクラッシュすることがありました (実際の電話でした)。これはすべてGalaxy SII上で行われました.Androidがまだそのようにかなりバグが多かった時代にさかのぼります.

CherryPy のセットアップは簡単です。これは純粋な Python であるため、パスのどこかにコピーをドロップしてインポートするだけです (エミュレーターも必要ありません)。

デバイスを起動しておくのに苦労するかもしれません。放っておくと眠ってしまいます。開発者向けオプションでスリープ状態を維持するように指示できますが、デバイスが充電中の場合にのみ機能すると確信しています.

更新: Android は現在、はるかに安定していますが、SL4A プロジェクトの作業はほぼ終了しています。SL4A をより大きなアプリの一部として維持する QPython というプロジェクトがあるため、この作業は引き続き実行できます。

于 2013-09-23T01:58:21.273 に答える
1

これは、約 10 分で Py4A / SL4A を使用して基本的な CGI Web サーバーで Android スマートフォンを有効にする方法を説明している私のブログ投稿の 1 つへのリンクですhttp://matbaker.wordpress.com/2013/01/29/android-webserver- 10分で/

于 2013-09-21T07:38:41.110 に答える
0

アプリケーションではサーバーを実行する必要があります。これは、一定の可用性、接続性、および無制限の処理能力を前提としています。携帯電話はこれらのどれも提供しません。

携帯電話は、処理と電力の需要を最小限に抑えることで、バッテリ寿命を節約するように設計されています。これらの 2 つの点は、サーバーの実行とは正反対です。

ただし、ランダムなクラッシュやダウンタイムがないという意味で、安定性が必要です。

ソフトウェアが正しく作成されていると仮定すると、クラッシュについて心配する必要はないかもしれませんが、OS は常にシステムをスリープ状態にしようとします。

  • CGI スクリプトを実行できる Web サーバーを実行する (vanilla CGI)
  • SMS に応答する
  • SQLite データベースを処理する
  • Python で実行します (Java への移植は時間の制約により実行できないため)。

小規模な仮想サーバーを使用しないのはなぜですか? サーバーは月額わずか 5 ドル (例: DigitalOcean ) で簡単に購入でき、 Twilioを SMS ゲートウェイとして使用できます (SMS あたり数セント)。安価で、入手可能で、信頼性が高く、可用性が高い。プリインストールされた Ubuntu イメージを取得し、そこにいくつかの追加パッケージをインストールすると、Python と SQLite を使用できます。また、モバイル/SMS 側 (信号強度、ネットワークの可用性など) についてまったく心配する必要はありません。上記のすべての点は、このソリューションによって満たされます。

サーバーを外部 (つまり「クラウド内」) で運用したくない場合は、古い PC を使用して Linux をインストールできます。または、プラグコンピューターを使用して、ほとんど目に見えないサーバーを使用することもできます. 携帯電話よりも適したハードウェアの選択肢はたくさんあります。

さまざまな理由から、これを Android フォンで実行すると、既存のセットアップに関するいくつかの問題が解決されます。

どのように?Android が好まれる理由は何ですか? ラップトップのバッテリーの問題について言及している場合、電話は同様の(悪くはないにしても)運命に苦しむでしょう.

要するに、そのようなシステムは安定しますか? コアプログラムが健全であると仮定すると、それを信頼できますか?

おそらく、ずっと OS とハードウェアと戦っていることでしょう。サーバーは常に稼働している必要がありますが、携帯電話は可能な限り稼働していないことを望んでいます。ハードウェアとソフトウェアのスタック全体が、省電力のために最適化されています。モバイルは断続的な充電でバッテリーから動作するように設計されており、その熱管理システムはできるだけ頻繁に CPU を起動しないように設計されています。モバイルをサーバーとして実行しようとすると、ハードウェアがすぐに使い果たされる可能性があります。24 時間 365 日稼働するようには設計されていません。そのようなシステムを実行することができ、おそらくしばらくは機能するでしょうが、そう遠くないうちにハードウェアを交換する必要があると思います。

サーバーを実行するタスクに適したハードウェアを使用してください。最近は古い PC を簡単に手に入れることができるので、無料で手に入れることができるはずです。

また、CGI は本当に要件ですか? WSGI を実際に確認する必要があります。それははるかに効率的です。CherryPi は優れた Python サーバーであり、Flask も一見の価値があります。

于 2013-09-24T13:07:11.377 に答える