我正在尝试在同一个redis数据库中保留多个具有不同任务和工作人员的芹菜队列.真的只是一个方便的问题,只需要一台redis服务器,而不是我的机器上的两台.
我按照芹菜教程文档逐字逐句,因为它是让它为我工作的唯一方法.现在,当我尝试使用略微调整的名称/队列复制所有内容时,它会一直出错.
注意 - 我是Python和Celery的新手,这显然是问题的一部分.我不确定哪些部分被命名为"任务/任务"作为名称与特殊单词.
我的精简版文档:运行celery -A tasks worker以生成工作者.tasks.py包含celery = Celery('tasks', broker='redis://localhost')连接到Celery的任务代码以及@task()我想要延迟的函数.
在我的排队任务计划中......
from tasks import do_work
do_work.delay()
Run Code Online (Sandbox Code Playgroud)
因此,鉴于上述所有内容,我需要采取哪些步骤将其转换为在不同队列和工作人员上独立运行的两种类型的任务?例如,blue_tasks和red_tasks?
我已经尝试将所有任务实例更改为blue_tasks或red_tasks.但是,当我排队blue_tasks时,我启动的red_tasks工作人员开始尝试使用它们.
我读了关于默认队列等等,所以我尝试了这个代码,但是没有用:
CELERY_DEFAULT_QUEUE = 'red'
CELERY_QUEUES = (
Queue('red', Exchange('red'), routing_key='red'),
)
Run Code Online (Sandbox Code Playgroud)
作为旁注,我不明白为什么celery workercelery试图连接到默认的amqp实例时出错,同时celery -A tasks worker告诉celery连接到Redis.celery worker如果没有指定任何内容,试图在worker上运行什么任务代码?
我正在使用Celery来自动化一些屏幕抓取.我正在使用Selenium打开Chrome webdriver,操作页面,保存一些数据,然后转到队列中的下一页.问题在于它为队列中的每个任务构建和分解Web驱动程序,这非常耗时且占用大量资源.
如何在通话中保留对象?我已经阅读了有关Celery中连接池的一些内容,但我不清楚这是如何工作的 - 我在哪里构建webdriver - 在任务文件或主排队文件中?如果是后者,工人们如何知道使用哪个webdriver?
例:
scrape.py:
for page in list:
scrape.delay(str(row['product_id']), str(row['pg_code']))
Run Code Online (Sandbox Code Playgroud)
tasks.py:
def scrape:
# do some stuff
Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 Ubuntu 14.04 的 Linode 实例上安装 docker。我到达最后一步并收到消息:E:无法找到包 docker-ce
我遵循了许多不同站点中的这组步骤,但没有运气:
sudo apt-get remove docker docker-engine docker.io
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce
Run Code Online (Sandbox Code Playgroud)
这是我运行 apt-get update 时看到的:
Ign http://us.archive.ubuntu.com trusty InRelease
Hit http://us.archive.ubuntu.com trusty-security InRelease
Hit http://us.archive.ubuntu.com trusty-updates InRelease
Hit http://us.archive.ubuntu.com trusty-backports InRelease
Hit http://us.archive.ubuntu.com trusty Release.gpg
Hit …Run Code Online (Sandbox Code Playgroud) 在关注howto的过程中,我遇到了以下代码:
NSDictionary *address = @{
(NSString *)kABPersonAddressStreetKey: _address.text,
(NSString *)kABPersonAddressCityKey: _city.text,
(NSString *)kABPersonAddressStateKey: _state.text,
(NSString *)kABPersonAddressZIPKey: _zip.text
};
Run Code Online (Sandbox Code Playgroud)
哪个不能在XCode 4.5.1中编译.我收到两个错误:
我在这里错过了什么?另外,在哪里可以找到有关NSDictionary对象的此快捷方式声明的文档?像这样的谷歌语法非常难.
我试过copy.deepcopy,但得到这个错误:文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy_reg.py”,第93行,在newobj return cls中。new (cls, *args) 类型错误:对象。new (psycopg2._psycopg.type) 不安全,请使用 psycopg2._psycopg.type。新()
我为什么要复制?因为我有两个要运行的查询,它们几乎但不完全相同。我已经应用了六个相同的过滤器,现在我想应用一个过滤器,执行它,然后“回滚”并应用另一个过滤器并执行它。
我尝试过酸洗和取消酸洗作为一种解决方法,但酸洗不适用于函数对象。