小编jon*_*atx的帖子

在PHP中导致"无法为池分配内存"的原因是什么?

我偶尔会遇到服务器的内存分配限制,特别是对于像Wordpress这样臃肿的应用程序,但从未遇到过"无法为池分配内存"而且无法跟踪任何信息.

有谁知道这意味着什么?我试过增加memory_limit没有成功.我还没有对该应用程序进行任何重大更改.有一天没有问题,第二天我遇到了这个错误.

php memory caching apc

131
推荐指数
4
解决办法
17万
查看次数

未定义Django NameError [app name]

尝试使用django-grappelli作为我的管理主题,安装具有惊人的挑战性.在我的urls.py中运行以下内容:

NameError .. name 'grappelli' is not defined
Run Code Online (Sandbox Code Playgroud)

该错误被抛出

(r'^grappelli/', include(grappelli.urls))
Run Code Online (Sandbox Code Playgroud)

用pip安装grappelli,grappelli在我的sites-packages目录中.添加到我的INSTALLED_APPS,运行syncdb,尝试将grappelli添加到我的pythonpath,但没有运气.如果我在urls.py中导入grappelli,则错误会更改为AttributeError - 'module' has no attribute 'urls'

建议或任何形式的帮助非常感谢.

python django django-grappelli

6
推荐指数
2
解决办法
3万
查看次数

与Celery的django-socketio:异步任务在单独的进程中完成后发送到套接字

如何在我的主Django应用程序进程中访问Celery任务的结果?或者,如何从单独的进程发布到现有套接字连接?

我有一个用户收到分数的应用程序.记录分数时,进行计算(目标进展等),并根据这些计算将通知发送给感兴趣的用户.计算可能需要30s +,因此为了避免缓慢的UI,这些操作是通过Celery任务在后台进程中执行的,由我的Score模型的post_save信号调用.

理想情况下,我的Nofication模型上的post_save信号会向订阅的客户端发布一条消息(我正在使用django-socketio,这是gevent-socketio的包装器).这似乎很简单......

  1. 创建一个分数
  2. 在后台进程中对新的Score实例进行一些计算
  3. 根据这些计算,创建通知
  4. 在Notification save上,获取实例并通过套接字连接发布到订阅的客户端

但是在尝试以下后我不确定这是否可行:

  • 将gevent的SocketIOServer实例传递给任务调用的回调方法,但是这需要对传递的对象进行pickle,这是不可能的

  • 在memchache中存储套接字的session_id(与Django的session_id不同),并在Celery任务进程中检索它.

  • 使用Redis pubsub,因此在后台进程中创建的模型上通过post_save信号调用的方法可以简单地发布到Redis通道,但是在主应用程序进程(可以访问套接字连接)中侦听聊天通道会阻止应用程序的其余部分.

  • 我还尝试为每个Redis客户端生成新线程,这些线程是为每个套接字订阅者创建的.据我所知,这需要生成一个新的gevent.greenlets.Greenlet,并且gevent不能用于多个线程

当然这是一个已解决的问题.我错过了什么?

django redis gevent django-celery

5
推荐指数
1
解决办法
1012
查看次数

标签 统计

django ×2

apc ×1

caching ×1

django-celery ×1

django-grappelli ×1

gevent ×1

memory ×1

php ×1

python ×1

redis ×1