spring - = 预计之后
我在我的 Spring XML 配置中写了以下内容
<context: component-scan base-package="com.tea.one.beans"/>
但是我'= expected'
在组件扫描后收到一条错误消息。我阅读了文档和几个站点,但无法弄清楚组件扫描后 = 应该是什么。
问题描述
我在我的 Spring XML 配置中写了以下内容
<context: component-scan base-package="com.tea.one.beans"/>
但是我'= expected'
在组件扫描后收到一条错误消息。我阅读了文档和几个站点,但无法弄清楚组件扫描后 = 应该是什么。
知道它应该是什么吗?谢谢!
您需要创建一个锁以防止两个任务同时执行,芹菜文档http://ask.github.io/celery/cookbook/tasks.html中有一个页面,其中包含如何执行此操作的示例。小心你的实现不会陷入某种死锁,并且你在你的锁上设置了一个超时,这样如果一个工作人员崩溃了,它就不会无限期地持有锁。
# Example from the link above
from celery.task import Task
from django.core.cache import cache
from django.utils.hashcompat import md5_constructor as md5
from djangofeeds.models import Feed
LOCK_EXPIRE = 60 * 5 # Lock expires in 5 minutes
class FeedImporter(Task):
name = "feed.import"
def run(self, feed_url, **kwargs):
logger = self.get_logger(**kwargs)
# The cache key consists of the task name and the MD5 digest
# of the feed URL.
feed_url_digest = md5(feed_url).hexdigest()
lock_id = "%s-lock-%s" % (self.name, feed_url_hexdigest)
# cache.add fails if if the key already exists
acquire_lock = lambda: cache.add(lock_id, "true", LOCK_EXPIRE)
# memcache delete is very slow, but we have to use it to take
# advantage of using add() for atomic locking
release_lock = lambda: cache.delete(lock_id)
logger.debug("Importing feed: %s" % feed_url)
if acquire_lock():
try:
feed = Feed.objects.import_feed(feed_url)
finally:
release_lock()
return feed.url
logger.debug(
"Feed %s is already being imported by another worker" % (
feed_url))
return
此模式需要一个用于获取锁的缓存服务器。当任务开始时,它会在缓存服务器中获得一个基于键的锁,例如“my_task”,然后当你的任务完成时它会释放那个锁。任何其他启动的任务可能都应该有一个while
循环等待它可以获取锁。Redis 锁是原子的,这意味着获取锁的操作不会同时发生,只有一个任务能够获取锁。
解决方案
推荐阅读
- r - R中主成分分析中的内积
- reactjs - HOC 传递属性
- c# - Xamarin Android SpeechRecognizer - SpeechRecognizerError.Network
- google-analytics - 在 Google Analytics(分析)仪表板上检查事件参数
- javascript - 在虚拟表中单击功能不起作用
- spring-security - 使用 mfa 重置密码的 JWT
- java - 被 proguard 混淆的 Throwable().getStackTrace()[0].getLineNumber()
- linux - 如何解释 smp_affinity 输出
- database - 在 Table2 上长时间运行的事务期间,PostgreSQL AutoVacuum 在 Table1 上不起作用
- sql - SQL JOIN ON 向上取整值 - ISSUE
我在我的 Spring XML 配置中写了以下内容
<context: component-scan base-package="com.tea.one.beans"/>
但是我'= expected'
在组件扫描后收到一条错误消息。我阅读了文档和几个站点,但无法弄清楚组件扫描后 = 应该是什么。
问题描述
我在我的 Spring XML 配置中写了以下内容
<context: component-scan base-package="com.tea.one.beans"/>
但是我'= expected'
在组件扫描后收到一条错误消息。我阅读了文档和几个站点,但无法弄清楚组件扫描后 = 应该是什么。
知道它应该是什么吗?谢谢!
您需要创建一个锁以防止两个任务同时执行,芹菜文档http://ask.github.io/celery/cookbook/tasks.html中有一个页面,其中包含如何执行此操作的示例。小心你的实现不会陷入某种死锁,并且你在你的锁上设置了一个超时,这样如果一个工作人员崩溃了,它就不会无限期地持有锁。
# Example from the link above
from celery.task import Task
from django.core.cache import cache
from django.utils.hashcompat import md5_constructor as md5
from djangofeeds.models import Feed
LOCK_EXPIRE = 60 * 5 # Lock expires in 5 minutes
class FeedImporter(Task):
name = "feed.import"
def run(self, feed_url, **kwargs):
logger = self.get_logger(**kwargs)
# The cache key consists of the task name and the MD5 digest
# of the feed URL.
feed_url_digest = md5(feed_url).hexdigest()
lock_id = "%s-lock-%s" % (self.name, feed_url_hexdigest)
# cache.add fails if if the key already exists
acquire_lock = lambda: cache.add(lock_id, "true", LOCK_EXPIRE)
# memcache delete is very slow, but we have to use it to take
# advantage of using add() for atomic locking
release_lock = lambda: cache.delete(lock_id)
logger.debug("Importing feed: %s" % feed_url)
if acquire_lock():
try:
feed = Feed.objects.import_feed(feed_url)
finally:
release_lock()
return feed.url
logger.debug(
"Feed %s is already being imported by another worker" % (
feed_url))
return
此模式需要一个用于获取锁的缓存服务器。当任务开始时,它会在缓存服务器中获得一个基于键的锁,例如“my_task”,然后当你的任务完成时它会释放那个锁。任何其他启动的任务可能都应该有一个while
循环等待它可以获取锁。Redis 锁是原子的,这意味着获取锁的操作不会同时发生,只有一个任务能够获取锁。
解决方案
推荐阅读
- r - R中主成分分析中的内积
- reactjs - HOC 传递属性
- c# - Xamarin Android SpeechRecognizer - SpeechRecognizerError.Network
- google-analytics - 在 Google Analytics(分析)仪表板上检查事件参数
- javascript - 在虚拟表中单击功能不起作用
- spring-security - 使用 mfa 重置密码的 JWT
- java - 被 proguard 混淆的 Throwable().getStackTrace()[0].getLineNumber()
- linux - 如何解释 smp_affinity 输出
- database - 在 Table2 上长时间运行的事务期间,PostgreSQL AutoVacuum 在 Table1 上不起作用
- sql - SQL JOIN ON 向上取整值 - ISSUE