android - 将 Android 手机作为稳定的网络服务器运行(用于 Python CGI 脚本)

标签 android python webserver cgi sl4a

我是 Android 新手。我有一个 Python 程序,它既是一个 CGI 脚本,也是一个用于小型数据库的基于 SMS 的交互系统。这是一个由草根组织运行的极低需求系统(少数用户)。但它需要稳定性,即没有随机崩溃或停机时间。由于各种原因,在 Android 手机上运行它可以解决现有设置的一些问题。然而,在我开始之前,我想检查一下这样一个系统的可行性。它必须:

  • 运行一个可以执行 CGI 脚本的网络服务器(vanilla CGI)
  • 回复短信
  • 处理 SQlite 数据库
  • 在 Python 中这样做(由于时间限制,将其移植到 Java 是不可行的)

在此阶段不需要与电话用户交互。

我知道需要的部分存在 - web servers with CGI , SL4A等。但网络服务器似乎主要供个人使用,SL4A 明确指出它 "is alpha quality software" .各种questions on SO relating to SL4A在这种用例上似乎也没有多说。他们专注于手机应用程序开发(例如 this one )。

简而言之,这样的系统会稳定吗?假设核心程序是可靠的,我可以依赖它吗?

最佳答案

TLDR:CherryPy 是一个可靠的服务器,而 Android 可能足够可靠,可以在当今构建服务器。


我曾经维护一个使用 CherryPy 和 SL4A 的项目(ws4py 用于 websockets)。

CherryPy 3.2.2 在 Python 2.6 和 Python 3.2 上完美运行。

该应用程序通常会运行一两天。好像跑久一点就好了,但是开发的时候重启了很多次。

CherryPy 一直很好,但 Android 设备有时确实会崩溃,因此 SL4A 会不时退出,需要重新启动。对于仅用作服务器的设备,这可能不是问题。对我来说,当设备整夜运行时它总是稳定的,但当我正常使用设备时偶尔会崩溃(这是我的真实手机)。所有这一切都发生在 Galaxy SII 上,那时候 Android 还存在很多问题。

设置 CherryPy 很简单。它是纯 Python,因此您只需将一个副本放到路径的某个位置并导入它(您也不需要模拟器)。

您可能很难让设备保持唤醒状态。如果它一个人呆着,它就会去 sleep 。您可以在开发者选项中告诉它保持清醒,但我很确定这只有在设备正在充电时才有效。

更新:Android 现在稳定多了,但是 SL4A 项目的工作几乎已经结束。有一个名为 QPython 的项目将 SL4A 作为更大应用程序的一部分进行维护,因此这些工作仍然可以完成。

关于android - 将 Android 手机作为稳定的网络服务器运行(用于 Python CGI 脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809214/

相关文章:

apache - 如何在 HTTP 中处理文件上传?

C++ - 一个非常简单的 HTTP 服务器 : WSA unreferenced error

android - setDataSourceFD 失败。 : status=0x80000000 on playing aac file on Samsung phones

python - 在文件行中查找匹配项,然后转到下一个文件

python - Python 类在哪里存储参数?

python - 使用不同关键字的 SQLAlchemy 搜索

java - Eclipse ADT 自动为 Activity 创建 fragment 。为什么?

android - 如何使用 Eclipse ADT 向导为 2048 位 key 大小的 android 应用程序签名生成 keystore ?

java - Android 日历序列化与 Java 6 不兼容

php - 允许 Node.js Web 服务器处理 PHP