草庐IT

python - 如何从脚本/模块 __main__ 启动 Celery worker?

我在一个模块中定义了一个Celery应用程序,现在我想从其__main__中的同一模块启动工作程序,即通过运行模块python-m而不是celery从命令行。我试过这个:app=Celery('project',include=['project.tasks'])#doallkindofproject-specificconfiguration#thatshouldoccurwheneverthismoduleisimportedif__name__=='__main__':#logstuffabouttheconfigurationapp.start(['worker','-A','

python - Celery 获取已注册任务列表

有没有办法获取已注册任务的列表?我试过了:celery_app.tasks.keys()仅返回内置的Celery任务,如celery.chord、celery.chain等。 最佳答案 对于新版本的celery(4.0或以上),我们可以通过如下方式获取注册任务。fromceleryimportcurrent_apptasks=current_app.tasks.keys()对于老版本的celery,celeryfromcelery.task.controlimportinspecti=inspect()i.registered_ta

python - Celery 获取已注册任务列表

有没有办法获取已注册任务的列表?我试过了:celery_app.tasks.keys()仅返回内置的Celery任务,如celery.chord、celery.chain等。 最佳答案 对于新版本的celery(4.0或以上),我们可以通过如下方式获取注册任务。fromceleryimportcurrent_apptasks=current_app.tasks.keys()对于老版本的celery,celeryfromcelery.task.controlimportinspecti=inspect()i.registered_ta

python - 如何在远程系统上配置和运行 celery worker

我正在研究celery并使用rabbitmq服务器,并在服务器的django项目中创建了一个项目(其中存在消息队列、数据库),它工作正常,我也创建了多个工作人员fromkombuimportExchange,QueueCELERY_CONCURRENCY=8CELERY_ACCEPT_CONTENT=['pickle','json','msgpack','yaml']CELERY_RESULT_BACKEND='amqp'CELERYD_HIJACK_ROOT_LOGGER=TrueCELERY_HIJACK_ROOT_LOGGER=TrueBROKER_URL='amqp://gue

python - 如何在远程系统上配置和运行 celery worker

我正在研究celery并使用rabbitmq服务器,并在服务器的django项目中创建了一个项目(其中存在消息队列、数据库),它工作正常,我也创建了多个工作人员fromkombuimportExchange,QueueCELERY_CONCURRENCY=8CELERY_ACCEPT_CONTENT=['pickle','json','msgpack','yaml']CELERY_RESULT_BACKEND='amqp'CELERYD_HIJACK_ROOT_LOGGER=TrueCELERY_HIJACK_ROOT_LOGGER=TrueBROKER_URL='amqp://gue

python - uwsgi:什么定义了 django 应用程序需要的 worker /进程的数量?

我有一个系统管理员和开发人员的问题。我看到uWSGI允许我在运行uWSGI时设置数量或工作程序或进程,并且我读过它取决于安装的机器,所以我有下一个问题:定义机器worker数量的规则是什么?与nginx一起使用时,nginx.conf中的配置worker_processes会影响这个吗?与Celery和Redis一起使用时,并发是否与此相关?此设置中的线程安全性如何?(我在我的应用中看到过1个请求执行1个任务的情况,结果是2次调用celery执行此任务。) 最佳答案 定义机器worker数量的规则是什么?来自uWsgidocs:Th

python - uwsgi:什么定义了 django 应用程序需要的 worker /进程的数量?

我有一个系统管理员和开发人员的问题。我看到uWSGI允许我在运行uWSGI时设置数量或工作程序或进程,并且我读过它取决于安装的机器,所以我有下一个问题:定义机器worker数量的规则是什么?与nginx一起使用时,nginx.conf中的配置worker_processes会影响这个吗?与Celery和Redis一起使用时,并发是否与此相关?此设置中的线程安全性如何?(我在我的应用中看到过1个请求执行1个任务的情况,结果是2次调用celery执行此任务。) 最佳答案 定义机器worker数量的规则是什么?来自uWsgidocs:Th

python - 模拟单元测试中的时间流逝

我已经为客户构建了一个付费的CMS+发票系统,我需要更加严格地进行测试。我将所有数据保存在DjangoORM中,并有一堆Celery任务以不同的时间间隔运行,以确保在用户不支付发票时发送新发票和发票提醒并切断访问权限。例如,我希望能够运行以下测试:创建一个新用户并为访问该网站的X天生成一张发票模拟X+1天的过去,并运行我在Celery中设置的所有任务。检查是否已向用户开具另外X天的新发票。到目前为止,我提出的KISS方法是在单独的机器上进行所有测试,并在操作系统级别实际操作日期/时间。所以测试脚本会:将系统日期设置为第1天创建一个新用户并为X天的访问生成第一张发票提前1天然后系统日期。

python - 模拟单元测试中的时间流逝

我已经为客户构建了一个付费的CMS+发票系统,我需要更加严格地进行测试。我将所有数据保存在DjangoORM中,并有一堆Celery任务以不同的时间间隔运行,以确保在用户不支付发票时发送新发票和发票提醒并切断访问权限。例如,我希望能够运行以下测试:创建一个新用户并为访问该网站的X天生成一张发票模拟X+1天的过去,并运行我在Celery中设置的所有任务。检查是否已向用户开具另外X天的新发票。到目前为止,我提出的KISS方法是在单独的机器上进行所有测试,并在操作系统级别实际操作日期/时间。所以测试脚本会:将系统日期设置为第1天创建一个新用户并为X天的访问生成第一张发票提前1天然后系统日期。

python - 创建 celery 任务然后同步运行

我的应用在一个页面上收集了一堆电话号码。一旦用户点击提交按钮,我就会创建一个celery任务来调用每个号码并发出提醒消息,然后将他们重定向到一个页面,在那里他们可以看到有关调用的实时更新。我正在使用网络套接字实时更新每个调用的状态,并且需要同步执行任务,因为我只能从一个号码拨出。所以一旦第一个调用/任务完成,我希望下一个调用/任务启动。我看了CELERY_ALWAYS_EAGER设置,但它刚刚经历了第一次迭代并停止了。@taskdefreminder(number):#CODETHATCALLSNUMBERHERE....defmake_calls(request):fornumber