1

我想在服务器上使用 uwsgi/nginx 运行 python 纸牌游戏。在互联网上学习 uwsgi 很痛苦,因此我的问题是:

如何在服务器上运行 python 应用程序并在某些请求进入时读取/更新我的对象?我不想跨数据库表建模我的游戏。这甚至可能吗?

所有教程都指向这个示例文件

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello world!"

但在应用程序函数内部,我无法引用任何先前定义的变量。我不想要的是:

i = 0
def application(env, start_response):
    i = i + 1
    start_response('200 OK', [('Content-Type','text/html')])
    return "Counter: " + str(i)

结果,每次有请求进来时我都会增加。

我写了数百行游戏,假设我能做到这么多……但我碰壁了。任何帮助都会救我。

4

2 回答 2

1

你需要global i在使用它之前。但这可能会也可能不会按您的预期工作,具体取决于您的 uwsgi 配置 - 您是否有一个进程池、使用线程或启用重新启动?这个global技巧只有在你只有一个进程在运行并且在请求之间没有被回收时才会起作用。并且该过程最好自己产生 -paste可能更容易配置为按照您想要的方式工作。

于 2013-05-31T16:37:04.127 回答
0

我相信每个请求处理程序都是一个单独的工作进程。您可以为此使用共享内存区域:

https://github.com/unbit/uwsgi-docs/blob/master/SharedArea.rst

于 2013-05-31T16:36:49.187 回答