我正在尝试为我的项目设置 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\nRun Code Online (Sandbox Code Playgroud)\n\n我很喜欢“--”文件夹和“**”文件。在 celery.py 文件内我有以下代码
\n\nfrom __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))\nRun 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) 我使用 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) 我面临着在 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)
我所有的误解都与这段代码有关,下一个问题是:
什么user和group我应该配置的服务部分指定?在上面 celery 为用户和组指定的文档示例中,但是当我在 Ubuntu …
我有模特联盟
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 信号特别是关于 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)