小编dav*_*ode的帖子

Celery:WorkerLostError:工人过早退出:信号9(SIGKILL)

我在我的Django应用程序(在Elastic Beanstalk上)使用Celery和RabbitMQ来管理后台任务,我使用Supervisor对其进行了守护.现在的问题是,我定义的一个期间任务失败了(在一周工作正常之后),我得到的错误是:

[01/Apr/2014 23:04:03] [ERROR] [celery.worker.job:272] Task clean-dead-sessions[1bfb5a0a-7914-4623-8b5b-35fc68443d2e] raised unexpected: WorkerLostError('Worker exited prematurely: signal 9 (SIGKILL).',)
Traceback (most recent call last):
  File "/opt/python/run/venv/lib/python2.7/site-packages/billiard/pool.py", line 1168, in mark_as_worker_lost
    human_status(exitcode)),
WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL).
Run Code Online (Sandbox Code Playgroud)

由主管管理的所有流程都正常运行(supervisorctl statusRUNNNING说).

我尝试在ec2实例上读取几个日志,但似乎没有人帮我找出SIGKILL的原因.我该怎么办?我该如何调查?

这些是我的芹菜设置:

CELERY_TIMEZONE = 'UTC'
CELERY_TASK_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
BROKER_URL = os.environ['RABBITMQ_URL']
CELERY_IGNORE_RESULT = True
CELERY_DISABLE_RATE_LIMITS = False
CELERYD_HIJACK_ROOT_LOGGER = False
Run Code Online (Sandbox Code Playgroud)

这是我的supervisord.conf:

[program:celery_worker]
environment=$env_variables
directory=/opt/python/current/app
command=/opt/python/run/venv/bin/celery worker -A com.cygora -l info --pidfile=/opt/python/run/celery_worker.pid
startsecs=10
stopwaitsecs=60
stopasgroup=true
killasgroup=true
autostart=true
autorestart=true
stdout_logfile=/opt/python/log/celery_worker.stdout.log …
Run Code Online (Sandbox Code Playgroud)

django amazon-ec2 celery supervisord amazon-elastic-beanstalk

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

如何使用Qunit的Karma测试运行器使用HTML装置?

我正在使用qunit(http://qunitjs.com)与Karma测试运行器(http://karma-runner.github.io/0.8/index.html)一起玩.我成功创建并运行了简单的测试(100%JavaScript),但现在我正在尝试使用HTML fixture来测试与DOM节点交互的代码.我可以通过这种方式在"文件"中声明它们来加载这些灯具:

{pattern: 'fixtures/myfixture.html', watched: true, served: true, included: false}
Run Code Online (Sandbox Code Playgroud)

它得到了karma的服务器,但我不明白我怎么能访问它的DOM :(

假设我的fixture是一个包含以下标记的简单html文件:

<div id="container">hello world</div>
Run Code Online (Sandbox Code Playgroud)

如何编写可以访问该节点(div)的测试?据我所知,"文档"与"静态"文件夹下的"context.html"文件有关...那么我的夹具的HTML在哪里?

javascript tdd unit-testing qunit karma-runner

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

如何在SQLAlchemy中设置连接超时

我试图找出如何设置连接超时create_engine(),到目前为止我已经尝试过:

create_engine(url, timeout=10)
Run Code Online (Sandbox Code Playgroud)

TypeError:使用配置PGDialect_psycopg2/QueuePool/Engine发送到create_engine()的无效参数'timeout'.请检查关键字参数是否适合此组件组合.

create_engine(url, connection_timeout=10)
Run Code Online (Sandbox Code Playgroud)

TypeError:使用配置PGDialect_psycopg2/QueuePool/Engine发送到create_engine()的无效参数'connection_timeout'.请检查关键字参数是否适合此组件组合.

create_engine(db_url, connect_args={'timeout': 10})
Run Code Online (Sandbox Code Playgroud)

(psycopg2.OperationalError)无效的连接选项"timeout"

create_engine(db_url, connect_args={'connection_timeout': 10})
Run Code Online (Sandbox Code Playgroud)

(psycopg2.OperationalError)无效的连接选项"connection_timeout"

create_engine(url, pool_timeout=10)
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

python postgresql sqlalchemy psycopg2

20
推荐指数
4
解决办法
2万
查看次数

PyCharm远程调试在docker容器中

我正在努力弄清楚如何设置在Docker容器中运行的python应用程序(Flask)的远程调试.具体来说,我使用的是docker-compose,PyCharm professional和python 3.5.这是我到目前为止所做的:

  • 我将"pycharm-debug-py3k.egg"复制到项目文件夹中
  • 我在wsgi.py文件中添加了以下行:

    import sys sys.path.append('../ pycharm-debug-py3k.egg')import pydevd pydevd.settrace('0.0.0.0',port = 8200,stdoutToServer = True,stderrToServer = True)

  • 我在PyCharm中创建了一个远程调试配置(通过将本地机器项目路径的路径映射到docker容器中的路径)

通过从PyCharm运行调试配置(单击错误图标),它打印(并挂起):

import sys
sys.path.append('../pycharm-debug-py3k.egg') 
import pydevd 
pydevd.settrace('0.0.0.0', port=8200, stdoutToServer=True, stderrToServer=True)
Run Code Online (Sandbox Code Playgroud)

...在docker容器日志中,我读到:

无法连接到0.0.0.0:4200

我该怎么办?(我的目标是能够在PyCharm中添加断点并停止执行docker容器应用程序以进行调试)

python pycharm docker

20
推荐指数
2
解决办法
1万
查看次数

具有固定页眉和页脚的HTML表以及没有固定宽度的可滚动主体

我想创建一个固定theadtfoot可滚动的表tbody!

我尝试了几种方法,包括CSS和CSS + Javascript,但它们都很弱且不可靠,我可以通过更改演示中的标记轻松打破它们.

我想要的是一种让表格像表格一样的方法,这意味着浏览器会根据内容(在窗口调整大小的情况下在页面加载时)自动调整列,在这些情况下:

  1. 如果列的header(thead > tr > th)的内容大于列的body(tbody > tr > td)的内容并且大于列的footer(tfoot > tr > td)的内容,则列应根据列的标题大小调整大小

  2. 如果列的body(tbody > tr > td)的内容大于列的header(thead > tr > th)的内容并且大于列的footer(tfoot > tr > td)的内容,则列应根据列的主体大小调整大小

  3. 如果列的footer(tfoot > tr > td)的内容大于列的header(thead > tr > th)的内容并且大于列的body(tbody > tr > td)的内容,则列应根据列的页脚大小调整大小

table下面应澄清的情况:

<table>
  <thead>
    <tr> …
Run Code Online (Sandbox Code Playgroud)

html javascript css html-table

18
推荐指数
3
解决办法
4万
查看次数

Unity3d中的c#方法覆盖

在最近几周,我使用c#作为脚本语言使用Unity3d.我从来没有在c#和Unity3d之前使用过,我试图理解方法覆盖在Unity框架中是如何工作的.让我感到奇怪的是,我可以扩展基类MonoBehavior并重写方法Start (),Update ()等等,而不必使用override关键字,编译器也不会抱怨它!相反,在"普通"C#程序中,我必须使用override关键字,否则我会收到编译器警告.例如:

public class BaseClass {
    public virtual void MyMethod () {
        Console.WriteLine("BaseClass.MyMethod()");
    }
}

public class SubClass : BaseClass {
    public override void MyMethod () {
        Console.WriteLine("SubClass.MyMethod()");
    }
}

class Program {
    static void Main ()  {
        SubClass obj = new SubClass ();
        obj.MyMethod ();
    }
}
Run Code Online (Sandbox Code Playgroud)

而在Unity中,我可以简单地做到:

class PlayerController : MonoBehaviour {
    void Update () {
        // code...
    }
}
Run Code Online (Sandbox Code Playgroud)

幕后发生了什么?团结是否利用"动态技巧"或什么?

c# unity-game-engine

17
推荐指数
1
解决办法
2822
查看次数

EC2 Amazon Beanstalk上的django-admin.py和python路径

我在Elastic Benastalk上部署了我的django应用程序,但我的命令失败了,我认为问题是django-admin.py不在$PYTHONPATH,我想将我的应用程序添加到python路径,但我不知道EC2实例上的确切路径是什么.实际上我发现它:( /opt/python/bundle/3/app我通过SSH使用"查找"命令)...但这是一个固定和可靠的路径?ps:WTF是那个"3"?(肯定不是我部署的版本或计数^ _ ^)

更新:

如果我cd /opt/python/bundle/3/app/myappname并运行:

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

我明白了:

  File "manage.py", line 3, in <module>
    from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
Run Code Online (Sandbox Code Playgroud)

解决了!

Amazon Beanstalk使用virtualenv(就像我在本地做的那样),为了激活它你必须:

source /opt/python/run/venv/bin/activate
cd /opt/python/current/app
python manage.py commandname
Run Code Online (Sandbox Code Playgroud)

但是,为了使用自定义管理命令(这就是我需要访问我的EC2实例上的django shell的原因),你必须将你的应用程序添加到python路径以及你的应用程序使用的所有环境变量,所以我做:

vi /home/ec2-user/.bash_profile
Run Code Online (Sandbox Code Playgroud)

并补充说:

export PYTHONPATH=$PYTHONPATH:/opt/python/current/app
Run Code Online (Sandbox Code Playgroud)

和我的env变量......现在它有效!:)

为了自动激活virtualenv并且能够在通过ssh记录后立即使用django shell,是否可以添加:

source /opt/python/run/venv/bin/activate
cd /opt/python/current/app
Run Code Online (Sandbox Code Playgroud)

在.bash_profile :)

python django amazon-ec2 amazon-web-services amazon-elastic-beanstalk

16
推荐指数
1
解决办法
4314
查看次数

SQLAlchemy Core:按命令排序

在SQLAlchemy核心中使用"ORDER BY foo DESC"执行select语句的正确方法是什么?(核心,不是ORM!)

我目前order_by直接包括方向:

mytable.select(order_by='name DESC')
Run Code Online (Sandbox Code Playgroud)

...它有效(虽然我不喜欢它,因为它有点"hackish"),但SQLAlchemy给了我以下警告:

SAWarning:无法解析标签引用'name DESC'; 转换为text()(10次出现后可能会抑制此警告)
util.ellipses_string(element.element))

(我在doc中没有找到任何相关内容)

python sqlalchemy

14
推荐指数
2
解决办法
8751
查看次数

UIViewController在ARC环境中的didReceiveMemoryWarning

我正在评估切换到ARC(自动引用计数)和重构以应用于我的代码.在我必须弄清楚的事情中,有这样的:

如果ARC不允许显式释放对象,我该怎么办didReceiveMemoryWarning?目前,我使用该方法释放属于我的控制器的对象,并且可以通过惰性getter轻松检索:

- (void)didReceiveMemoryWarning {
    [_foo release]; _foo = nil;
    [super didReceiveMemoryWarning];
}
Run Code Online (Sandbox Code Playgroud)

和相对懒惰的吸气剂:

- (Foo *)foo {
    if (_foo) {
        return _foo;
    }
    return (_foo = [[Foo alloc] init]);
}
Run Code Online (Sandbox Code Playgroud)

在ARC中实现这样的"模式"似乎是不可能的...所以,我该怎么办?在ARC中,didReceiveMemoryWarning应被视为"已弃用"/无用吗?

cocoa-touch objective-c uikit automatic-ref-counting

12
推荐指数
1
解决办法
3863
查看次数

动态获取PHP类命名空间

如何自动检索类命名空间?

魔术变量__NAMESPACE__是不可靠的,因为在子类中它没有被正确定义.

例:

class Foo\bar\A- > __NAMESPACE__=== Foo\bar

class Ping\pong\B extends Foo\bar\A- > __NAMESPACE__=== Foo\bar(应该是Ping\pong)

ps:我注意到使用了相同的错误行为__CLASS__,但我解决了使用get_called_class()......有类似的东西get_called_class_namespace()吗?我该如何实现这样的功能?

更新:
我认为解决方案是我自己的问题,因为我意识到get_called_class()返回完全限定的类名,因此我可以从中提取命名空间:D ...无论如何,如果有更有效的方法让我知道;)

php oop introspection

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