小编Наг*_*мер的帖子

如何解决此 celery 错误:无法加载 celery 应用程序。模块“forecast”没有属性“celery”

我正在尝试为我的项目设置 Celery 和 Amazon SQS\xc2\xa0 但遇到问题。我做了以下。我将 celery.py 文件放在设置 py 所在的项目目录中。这是我的项目\xc2\xa0 的快照

\n\n
--predictions\n     --forecast\n        --dataflow\n        --forecast\n              **  __init__.py\n              **  celery.py\n              **  urls.py\n               ** settings.py\n               ** wsgi.py\n        --manage.py\n     --env\n
Run Code Online (Sandbox Code Playgroud)\n\n

我很喜欢“--”文件夹和“**”文件。在 celery.py 文件内我有以下代码

\n\n
from __future__ import      \nabsolute_import, unicode_literals\nimport os\nfrom celery import Celery                       \n\n\nos.environ.setdefault\n(\'DJANGO_SETTINGS_MODULE\',\n\'forecast.settings\')\n\napp = Celery(\'forecast\')\napp.config_from_object\n(\'django.conf:settings\')\n\napp.autodiscover_tasks()\n\napp.conf.beat_schedule = {\n\'display_time-30-seconds\':   \n{ \'task\':  \'demoapp.tasks.display_time\',\n    \'schedule\': 10.0\n },\n}                                                 \n@app.task(bind=True)                             \ndef debug_task(self):\n    print(\'Request:     \n    {0r}\'.format(self.request))\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 settings.py 文件中我设置了 Amazon 凭证、broker_url 等

\n\n
#settings.py\n# AWS Credentials                                 \nAWS_ACCESS_KEY_ID = (\'lol\')      \nAWS_SECRET_ACCESS_KEY =    \n(\'Lol\')                                                                              \n\n# Celery                                          \nBROKER_URL = …
Run Code Online (Sandbox Code Playgroud)

python django django-models celery django-celery

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

该平台缺乏有效的 sem_open 实现,因此,需要所需的同步原语

我使用 Termux 在 Android 手机上安装了 python 3.7.3。当我尝试从 python shell 中的多处理导入同步时,我收到上述错误。这是我的代码

from multiprocessing import synchronize 
Run Code Online (Sandbox Code Playgroud)

这是回溯

Traceback (most recent call last):
File "/data/data/com.termux/files/usr/lib/python3.7/multiprocessing/synchronize.py", line 28, in <module>
from _multiprocessing import SemLock, sem_unlink
ImportError: cannot import name 'SemLock' from '_multiprocessing' (/data/data/com.termux/files/home/storage/predictions/env/lib/python3.7/lib-dynload/_multiprocessing.cpython-37m.so)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/data/data/com.termux/files/usr/lib/python3.7/multiprocessing/synchronize.py", line 32, in <module>
" synchronization primitives needed will not" +
ImportError: This platform lacks a functioning sem_open implementation, …
Run Code Online (Sandbox Code Playgroud)

python termux

4
推荐指数
1
解决办法
3747
查看次数

如何将 celery 设置为守护进程

我面临着在 Ubuntu 16.04 服务器上将 celery 设置为我的 django 项目的守护进程的必要性,同时我遇到了几个误解,我将在我的问题中进行描述。我知道根据 Stack 的规则,询问应该只问一个明确的问题,但我会在一个问题中问几个,因为第一个问题来自第二个问题等等。

为了将 celery 作为守护进程,我决定使用SystemD. 在文档中,Demonization celery提供了一个指南,但它不像我想要的那么清楚,也许是因为我是初学者。我的第一个问题是:我应该分别设置 celery 和 celerybeat 吗?这是文档提供的配置示例

[Unit] 
Description=Celery Service    
After=network.target 

[Service] 
Type=forking 
User=celery 
Group=celery 
EnvironmentFile=/etc/conf.d/celery 
WorkingDirectory=/opt/celery 
ExecStart=/bin/sh -c '${CELERY_BIN}    multi start ${CELERYD_NODES} \ -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \ --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}' 
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} \ --pidfile=${CELERYD_PID_FILE}'  
ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} \ -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \ --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}' 

[Install] WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

我所有的误解都与这段代码有关,下一个问题是:

什么usergroup我应该配置的服务部分指定?在上面 celery 为用户和组指定的文档示例中,但是当我在 Ubuntu …

django celery

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

如何将 update_or_create 与默认参数一起使用

我有模特联盟

class League(models.Model):                         
    league = models.IntegerField(primary_key=True)                                                    
    league_name = models.CharField(max_length=200)
    country_code = models.ForeignKey("Country",null=True, on_delete=models.SET_NULL)                
    season = models.ForeignKey("Season", null=True,on_delete = models.SET_NULL, to_field = "season")                                                
    season_start = models.DateField(null = True)    season_end = models.DateField(null = True)      
    league_logo = models.URLField(null = True)      league_flag = models.URLField(null = True)      
    standings = models.IntegerField(null=True)          
    is_current = models.IntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)

我从这个模型创建了对象。之后,我需要向联赛模型添加一些额外的字段,在添加这些字段之后,联赛对象变得如此

class League(models.Model):                         
    league = models.IntegerField(primary_key=True)                                                    
    league_name = models.CharField(max_length=200)
    country_code = models.ForeignKey("Country",null=True, on_delete=models.SET_NULL)                
    season = models.ForeignKey("Season", null=True,on_delete = models.SET_NULL, to_field = "season")                                                
    season_start = models.DateField(null = True)    season_end = models.DateField(null = True) …
Run Code Online (Sandbox Code Playgroud)

django django-models

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

如何传递启动Django post保存信号的数据库对象id

我正在尝试解决以下问题。我有 django 视图,它提供在数据库中保存对象的功能。查看将保存对象后,我想立即处理保存的对象上的一些逻辑(例如检查某些字段与另一个对象的相似性)
我听说 django 信号特别是关于 post_save 信号,我认为这适合我的用例。但对于我的用例,我需要传递启动 post_save 信号执行的对象 ID。django 中是否存在任何内置解决方案来提取该对象 ID,以进一步将其传递给信号函数的接收者
希望我的伪代码能够提供更多的证明

app_view(receive and save data as django model object) 

post_save signal(receiver, id_of_object_initiated_execution)
Run Code Online (Sandbox Code Playgroud)

django django-signals

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